Современные программы для создания электронных таблиц имеют много интересных функций, которые делают работу пользователя с данными более комфортной. Одна из таких функций "Проверка данных" ("Data Validation") позволяет контролировать корректность ввода данных в ячейке электронной таблицы. Контроль достигается за счет ограничения типа данных или значений, которые можно ввести в ячейку. Одним из часто используемых применений механизма проверки данных является создание выпадающих списков. Давайте посмотрим, как создать выпадающий список в ячейке электронной таблицы "руками" в Google Таблицы и Microsoft Excel. А также создадим его из программы.
Предположим, что нам необходимо в ячейке или диапазоне ячеек ограничить пользователя вводом названия календарного месяца.
Google Таблицы. Выбираем нужную ячейку и в пункте меню "Данные" выбираем "Настроить проверку данных". В открывшемся диалоге достаточно указать "Значение из списка" в поле "Правила" и через запятую список значений. Остальные параметры заполняются "по вкусу".
Сохраняем и наслаждаемся выпадающим списком:
Microsoft Excel. Кто у кого списал - не известно, но тут реализация такая же. Выбираем закладку "Данные" (Data) и нажимаем кнопку "Проверка данных" (Data Validation).
В открывшемся диалоге в поле "Тип данных" выбираем "Список", а в поле "Источник" вносим список значений. Только в отличии от Google Таблицы, значения в списке должны быть разделены точкой с запятой. Нажимаем кнопку ОК и получаем выпадающий список:
Как видите все просто. При желании, и у Google и в Excel, вместо фиксированного списка можно указать диапазон ячеек (например, справочник со скрытого листа).
Так же просто это сделать и из программы на Delphi. Для используемой мной библиотеки TMS FlexCel это два шага: первый - заполнив запись типа TDataValidationInfo описать правила проверки данных в ячейке, а второй - добавить описанную проверку ячейке или их диапазону. Описать правила проверки данных можно вызвав функцию TDataValidationInfo.Create, которая имеет следующие параметры:
В качестве примера приведу код тестовой процедуры:
Предположим, что нам необходимо в ячейке или диапазоне ячеек ограничить пользователя вводом названия календарного месяца.
Google Таблицы. Выбираем нужную ячейку и в пункте меню "Данные" выбираем "Настроить проверку данных". В открывшемся диалоге достаточно указать "Значение из списка" в поле "Правила" и через запятую список значений. Остальные параметры заполняются "по вкусу".
Сохраняем и наслаждаемся выпадающим списком:
Microsoft Excel. Кто у кого списал - не известно, но тут реализация такая же. Выбираем закладку "Данные" (Data) и нажимаем кнопку "Проверка данных" (Data Validation).
В открывшемся диалоге в поле "Тип данных" выбираем "Список", а в поле "Источник" вносим список значений. Только в отличии от Google Таблицы, значения в списке должны быть разделены точкой с запятой. Нажимаем кнопку ОК и получаем выпадающий список:
Как видите все просто. При желании, и у Google и в Excel, вместо фиксированного списка можно указать диапазон ячеек (например, справочник со скрытого листа).
Так же просто это сделать и из программы на Delphi. Для используемой мной библиотеки TMS FlexCel это два шага: первый - заполнив запись типа TDataValidationInfo описать правила проверки данных в ячейке, а второй - добавить описанную проверку ячейке или их диапазону. Описать правила проверки данных можно вызвав функцию TDataValidationInfo.Create, которая имеет следующие параметры:
| Наименование | Тип данных | Описание |
| aValidationType | TDataValidationDataType | Тип проверки. Она может быть: жестко типизированной (integer, decimal, date, time), произвольной или даже определяться формулой |
| aCondition | TDataValidationConditionType | Условие используемое при проверке данных (различные варианты условий для FirstFormula и SecondFormula) |
| aFirstFormula | UTF16String | Формула для первого условия проверки данных |
| aSecondFormula | UTF16String | Формула для второго условия проверки данных (если оно имеет два условия) |
| aIgnoreEmptyCells | Boolean | Если True, то пустые ячейки не будут вызывать ошибки проверки данных |
| aInCellDropDown | Boolean | Если ValidationType=List, то это свойство указывает отображать раскрывающийся список или нет (если нет, то выполняется только проверка корректности) |
| aExplicitList | Boolean | Если True, то FirstFormula содержит список значений, т.е. она должна быть формулой типа ="строка", где строка - это список значений разделенных символом #0 |
| aShowErrorBox | Boolean | Если True, то при вводе некорректного значения показывается сообщение об ошибке |
| aErrorBoxCaption | UTF16String | Замена стандартного заголовка сообщения об ошибке (если aShowErrorBox=True) |
| aErrorBoxText | UTF16String | Замена стандартного текста сообщения об ошибке (если aShowErrorBox=True) |
| aShowInputBox | Boolean | Если True, то когда пользователь выбирает ячейку с проверкой данных будет показываться подсказка |
| aInputBoxCaption | UTF16String | Заголовок подсказки (если aShowInputBox=True) |
| aInputBoxText | UTF16String | Текст подсказки (если aShowInputBox=True) |
| aErrorIcon | TDataValidationIcon | Иконка диалога сообщения об ошибке (Stop, Warning, Information) |
В качестве примера приведу код тестовой процедуры:
procedure DataValidationTest;
var
xls: TExcelFile;
dv : TDataValidationInfo;
begin
xls := TXlsFile.Create(1, True);
try
xls.SetCellValue(1, 1, 'Месяц');
dv := TDataValidationInfo.Create(
TDataValidationDataType.List, // используем встроенный список
TDataValidationConditionType.Between, // для списка игнорируется
'="'+string.Join(#0, FormatSettings.LongMonthNames)+'"',//список
'', // для списка игнорируется
False, // запретим пустые ячейки
True, // отображаем раскрывающийся список
True, // True, т.к. наше свойство FirstFormula содержит список
True, // сообщим пользователю о недопустимом значении
'Аларма', // свой заголовок сообщения об ошибке
'', // оставим стандартное сообщение об ошибке
True, // покажем пользователю подсказку
'', // подсказка без заголовка
'Введите месяц', // текст подсказки
TDataValidationIcon.Warning);
// добавим проверку данных в указанный диапазон
xls.AddDataValidation(TXlsCellRange.Create('A2:A5'), dv);
xls.Save('dv.xlsx');
finally
xls.Free;
end;
end; Функция электронных таблиц "Проверка данных" не ограничивается созданием выпадающего списка - это простой, но достаточно гибкий и мощный механизм контроля корректности вводимой пользователем информации.



Комментариев нет:
Отправить комментарий