Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.28. Вспомогательный объект для работы с модальными окнами
А.5.28.3. Типы и флаги полей ввода
Типы и флаги полей ввода указываются при добавлении полей во вспомогательный объект для работы с окнами функцией rdsFORMAddEdit.
Типы полей ввода
Тип поля ввода – это одна из констант RDS_FORMCTRL_*, передающихся в младшем байте параметра Type функции добавления поля ввода rdsFORMAddEdit. На данный момент в RDS поддерживаются следующие типы полей ввода:
- RDS_FORMCTRL_BUTTON
Кнопка, реакция на которую определяется функцией обратного вызова (пример ее использования приведен в
§2.16.1 руководства программиста). Для открытия окна с такими кнопками нужно
использовать функцию rdsFORMShowModalServ, только она поддерживает функцию
обратного вызова, которая может реагировать на нажатия кнопок (событие
RDS_FORMSERVEVENT_CLICK). Кнопка поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение текста на кнопке;
- RDS_FORMVAL_ENABLED – разрешение/запрещение кнопки;
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании кнопки был указан флаг RDS_FORMFLAG_CHECK.
- RDS_FORMCTRL_CHECKBOX
Одиночный флаг, не связанный с другими (пример такого поля приведен в
§2.13.6 руководства программиста). Пользователь может включить или выключить
его. Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение значения флага (0 – флаг выключен, 1 – флаг включен);
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля.
- RDS_FORMCTRL_COLOR
Кнопка выбора цвета (пример такого поля приведен в
§2.10.1 руководства программиста). При ее нажатии открывается стандартный диалог
выбора цвета Windows. Текущий выбранный цвет изображается на самой кнопке. Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение цвета в виде целого числа;
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля;
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- RDS_FORMCTRL_COMBOEDIT
Поле ввода с выпадающим списком готовых вариантов заполнения. Пользователь может ввести
значение поля с клавиатуры или выбрать одно из значений в выпадающем списке.
Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение значения поля;
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля;
- RDS_FORMVAL_LIST – установка списка вариантов (строки списка разделяются символом перевода строки «\n» с кодом 10);
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- RDS_FORMCTRL_COMBOLIST
Выпадающий список без возможности ручного ввода значения (пример такого поля приведен в
§2.7.2 руководства программиста). Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение номера выбранного в списке варианта или чтение значения поля: функции rdsGetObjectStr и rdsGetObjectDouble возвращают само значение поля, функция rdsGetObjectInt возвращает номер выбранного варианта, все три функции rdsSetObjectInt, rdsSetObjectDouble и rdsSetObjectStr устанавливают номер выбранного варианта;
- RDS_FORMVAL_ITEMINDEX – установка и чтение номера выбранного в списке варианта;
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля;
- RDS_FORMVAL_LIST – установка списка вариантов (строки списка разделяются символом перевода строки «\n» с кодом 10);
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- RDS_FORMCTRL_DIRDIALOG
Кнопка выбора папки (пример такого поля приведен в
§3.2 руководства программиста). При нажатии на кнопку открывается
стандартный диалог Windows для выбора папки. Пользователь также может ввести имя папки вручную,
поддерживаются символические обозначения стандартных путей
RDS. Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение имени папки;
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля;
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- RDS_FORMCTRL_DISPLAY
Индикация значения без возможности редактирования пользователем (пример такого поля приведен в
§2.7.4 руководства программиста). Поле поддерживает единственную команду:
- RDS_FORMVAL_VALUE – установка и чтение значения поля.
- RDS_FORMCTRL_EDIT
Обычное поле для ввода одной строки текста (пример такого поля приведен в
§2.7.2 руководства программиста). Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение значения поля;
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля;
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- RDS_FORMCTRL_FONTSELECT
Кнопка выбора шрифта. При нажатии на нее открывается стандартный диалог выбора шрифта Windows. Пример такого
поля приведен в
§2.10.1 руководства программиста). Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение значения поля: в качестве значения используется текст описания шрифта, формируемый функцией rdsStructToFontText и разбираемый функцией rdsFontTextToStruct;
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля;
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- RDS_FORMCTRL_HOTKEY
Поле ввода для сочетания клавиш (пример такого поля приведен в
§2.12.4 руководства программиста). Поместив курсор в это поле,
пользователь может нажать произвольное сочетание клавиш, после чего название этого сочетания
автоматически отобразится в самом поле. Клавиша
Backspace очищает поле. Значением поля является код клавиши
и сочетание флагов, указывающих состояние служебных клавиш
Ctrl, Alt и Shift.
Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение значения кода клавиши;
- RDS_FORMVAL_HKSHIFTS – установка и чтение состояния клавиш Ctrl, Alt и Shift;
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля;
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- RDS_FORMCTRL_LABEL
Надпись без поля ввода (пример ее использования приведен в
§2.10.1 руководства программиста). Обычно такая надпись используется в
качестве заголовка группы полей ввода, следующих за ней. Надпись поддерживает единственную команду:
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля.
- RDS_FORMCTRL_LISTANDEDIT
Поле ввода, слева от которого размещается выпадающий список с фиксированным набором вариантов.
В этом списке могут находиться, например, единицы измерения значения из основного поля ввода, названия
параметров, которые можно ввести в основное поле и т.п. Если окно открыто функциями
rdsFORMShowModalServ или rdsFORMShowModalEx, в
их функциях обратного вызова можно разрешать или запрещать основное поле ввода в зависимости от варианта,
выбранного в выпадающем списке. Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение значения основного поля ввода;
- RDS_FORMVAL_LIST – установка списка вариантов (строки списка разделяются символом перевода строки «\n» с кодом 10);
- RDS_FORMVAL_AUXLISTITEM – установка и чтение номера выбранного в выпадающем списке варианта;
- RDS_FORMVAL_AUXLISTWIDTH – установка ширины выпадающего списка в точках экрана. Параметр Width в функции rdsFORMAddEdit задает ширину только основного поля ввода;
- RDS_FORMVAL_ENABLED – разрешение/запрещение всего поля ввода (выпадающего списка вместе с основным полем ввода);
- RDS_FORMVAL_2NDEDITENABLED – отдельное разрешение/запрещение основного поля ввода;
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- RDS_FORMCTRL_MULTILINE
Поле для ввода нескольких строк текста (пример такого поля приведен в
§2.13.6 руководства программиста). Параметр Width функции
rdsFORMAddEdit для этого поля игнорируется – поле занимает всю ширину окна,
а его заголовок размещается не слева от поля, а над ним. Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение значения поля;
- RDS_FORMVAL_MLHEIGHT – установка высоты поля в точках экрана (отрицательное значение высоты автоматически расширит поле до нижней границы окна);
- RDS_FORMVAL_MLRETURNS – реакция поля на нажатие пользователем клавиши Enter: 1 – при нажатии Enter в поле записывается перевод строки, 0 – нажатие Enter, как обычно, эквивалентно закрытию окна кнопкой «» (поведение поля по умолчанию);
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля;
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- RDS_FORMCTRL_NONVISUAL
- Скрытое поле, никак не отображающееся в окне, но позволяющее хранить какие-либо данные
(пример такого поля приведен в
§2.16.1 руководства программиста). Эти данные можно считывать, например, в
функции обратного вызова функций открытия окна rdsFORMShowModalServ и
rdsFORMShowModalEx – другого способа передать произвольные данные в
функцию обратного вызова нет. Поле поддерживает единственную команду:
- RDS_FORMVAL_VALUE – установка и чтение значения поля.
- RDS_FORMCTRL_OPENDIALOG
Кнопка открытия файла (пример приведен в
§2.16.2 руководства программиста). При нажатии на кнопку появляется стандартный
диалог открытия файла Windows. Пользователь также может ввести имя файла вручную, поддерживаются
символические обозначения стандартных путей RDS.
Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение значения поля;
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля;
- RDS_FORMVAL_LIST – установка списка шаблонов имен файлов диалога (см. ниже);
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- одна строка списка содержит один шаблон, строки списка разделяются символом перевода строки «\n» с кодом 10;
- шаблон состоит из названия, видимого пользователю, за которым следует символ вертикальной черты «|» и набор масок имен файлов, разделенных точкой с запятой.
- RDS_FORMCTRL_PAINTBOX
Область, в которой можно программно рисовать функцией обратного вызова (пример использования приведен в
§2.7.3 руководства программиста). Для открытия окна с областями программного
рисования нужно использовать сервисную функцию rdsFORMShowModalServ, только она
поддерживает функцию обратного вызова, которая может рисовать в таких областях по событию
RDS_FORMSERVEVENT_DRAW. Поле поддерживает следующие команды:
- RDS_FORMVAL_PBHEIGHT – установка высоты поля в точках экрана (отрицательное значение высоты автоматически расширит поле до нижней границы окна);
- RDS_FORMVAL_PBBEVEL – установка рельефной рамки вокруг области рисования: 1 – рамка есть (поведение по умолчанию), 0 – рамки нет.
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- RDS_FORMCTRL_RADIOBUTTON
Флаг, связанный с другими флагами этой же вкладки или
боковой панели. Вместе с дополнительными
разрешающими флагами RDS_FORMFLAG_CHECKRADIO такие флаги в пределах одной
вкладки или боковой панели окна образуют группу, в которой может быть включен только один флаг.
При включении какого-либо флага в такой группе все остальные автоматически выключаются. Поле
поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение значения флага (0 – флаг выключен, 1 – флаг включен);
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля.
- RDS_FORMCTRL_RANGEEDIT
Два поля ввода для задания диапазона значений (пример приведен в
§2.10.1 руководства программиста). Значения в полях устанавливаются
независимо, никаких внутренних проверок не производится. В оба поля можно вводить
как числовые, так и символьные значения. Фактически, RDS_FORMCTRL_RANGEEDIT
можно использовать просто как двойное поле ввода. Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение значения первого поля (начала диапазона);
- RDS_FORMVAL_RANGEMAX – установка и чтение значения второго поля (конца диапазона);
- RDS_FORMVAL_ENABLED – разрешение/запрещение всего поля ввода (обоих его полей одновременно);
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- RDS_FORMCTRL_SAVEDIALOG
Кнопка сохранения файла (пример такого поля приведен в
§2.13.6 руководства программиста). При нажатии на кнопку появляется
стандартный диалог сохранения файла Windows. Пользователь также может ввести имя файла вручную,
поддерживаются символические обозначения стандартных путей RDS.
Поле поддерживает следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение значения поля;
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля;
- RDS_FORMVAL_LIST – установка списка шаблонов имен файлов диалога (см. ниже);
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
- одна строка списка содержит один шаблон, строки списка разделяются символом перевода строки «\n» с кодом 10;
- шаблон состоит из названия, видимого пользователю, за которым следует символ вертикальной черты «|» и набор масок имен файлов, разделенных точкой с запятой.
- RDS_FORMCTRL_UPDOWN
Поле ввода со стрелками вверх и вниз, позволяющими изменять значение с фиксированным шагом (пример приведен в
§2.10.1 руководства программиста). Поле может работать как с целыми,
так и с вещественными значениями. Поддерживаются следующие команды:
- RDS_FORMVAL_VALUE – установка и чтение значения поля;
- RDS_FORMVAL_UPDOWNINC – установка шага изменения значения поля при нажатии на кнопки со стрелками;
- RDS_FORMVAL_UPDOWNMIN – установка минимального значения поля, ниже которого его нельзя будет изменить стрелками (эту проверку можно отключить, см. ниже);
- RDS_FORMVAL_UPDOWNMAX – установка максимального значения поля, выше которого его нельзя будет изменить стрелками (эту проверку можно отключить, см. ниже);
- RDS_FORMVAL_ENABLED – разрешение/запрещение поля;
- RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
Флаги полей ввода
Флаги поля ввода – это набор констант RDS_FORMFLAG_*, объединенных битовым ИЛИ и передающихся в старших трех байтах параметра Type функции добавления поля ввода rdsFORMAddEdit. На данный момент в RDS поддерживаются следующие флаги полей ввода:
- RDS_FORMFLAG_CHECK
Дополнительный разрешающий флаг («галочка») слева от заголовка данного поля.
Этот флаг не может сочетаться с полями типа RDS_FORMCTRL_CHECKBOX и
RDS_FORMCTRL_RADIOBUTTON. Для программного управления состоянием этого флага
используется команда RDS_FORMVAL_CHECK. Фактически, этот флаг позволяет
объединить в одном поле ввода два: например, значение разрешающего флага можно использовать как
признак наличия или отсутствия какого-либо параметра, а значение самого поля ввода –
как значение этого параметра. Пример использования флага приведен в
§2.15.3 руководства программиста.
- RDS_FORMFLAG_CHECKRADIO
Разрешающий флаг слева от заголовка поля связан с другими флагами вкладки (только при
установленном флаге RDS_FORMFLAG_CHECK). Вместе с полями ввода
RDS_FORMCTRL_RADIOBUTTON такие флаги в пределах одной вкладки
или боковой панели окна образуют группу,
в которой может быть включен только один флаг. При включении какого-либо флага в такой
группе все остальные автоматически выключаются.
Если для данного поля не установлен флаг RDS_FORMFLAG_CHECK, флаг RDS_FORMFLAG_CHECKRADIO игнорируется.- RDS_FORMFLAG_DISABLED
Поле ввода запрещено и отображается серым цветом. Позже оно может быть разрешено командой
RDS_FORMVAL_ENABLED.
- RDS_FORMFLAG_LCENTER
Заголовок поля ввода выровнен по центру (только если не установлен флаг
RDS_FORMFLAG_CHECK). По умолчанию все заголовки выравниваются по левому краю.
- RDS_FORMFLAG_LINE
Рельефная горизонтальная линия под данным полем ввода (пример использования флага приведен в
§2.10.1 руководства программиста). Обычно такие линии используют для
визуального разделения групп полей ввода, связанных по смыслу.
- RDS_FORMFLAG_LRIGHT
Заголовок поля ввода выровнен по правому краю (только если не установлен флаг
RDS_FORMFLAG_CHECK). По умолчанию все заголовки выравниваются по левому краю.