Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.28. Вспомогательный объект для работы с модальными окнами

А.5.28.3. Типы и флаги полей ввода

# Приложения

## Приложение А. Функции, константы и структуры 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, как обычно, эквивалентно закрытию окна кнопкой «OK» (поведение поля по умолчанию);
  - 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.
  Список шаблонов, устанавливаемый командой RDS_FORMVAL_LIST, имеет следующую структуру:
  - одна строка списка содержит один шаблон, строки списка разделяются символом перевода строки «\n» с кодом 10;
  - шаблон состоит из названия, видимого пользователю, за которым следует символ вертикальной черты «|» и набор масок имен файлов, разделенных точкой с запятой.
  Например, если требуется указать два шаблона, один из которых будет отображать в диалоге только текстовые файлы с расширениями «txt» и «log», а другой – все файлы, командой RDS_FORMVAL_LIST нужно передать в поле строку «Текстовые файлы|*.txt;*.log\nВсе файлы|*.*».
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_FORMVAL_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.
  Ширина, указываемая в параметре Width функции функции rdsFORMAddEdit, для поля этого типа задает общую ширину двух полей вместе с разделяющим их многоточием. Ширина левого и правого поля вычисляется автоматически таким образом, чтобы все двойное поле имело ширину Width.
RDS_FORMCTRL_SAVEDIALOG
  Кнопка сохранения файла (пример такого поля приведен в §2.13.6 руководства программиста). При нажатии на кнопку появляется стандартный диалог сохранения файла Windows. Пользователь также может ввести имя файла вручную, поддерживаются символические обозначения стандартных путей RDS. Поле поддерживает следующие команды:
  - RDS_FORMVAL_VALUE – установка и чтение значения поля;
  - RDS_FORMVAL_ENABLED – разрешение/запрещение поля;
  - RDS_FORMVAL_LIST – установка списка шаблонов имен файлов диалога (см. ниже);
  - RDS_FORMVAL_CHECK – управление дополнительным разрешающим флагом, если при создании поля был указан флаг RDS_FORMFLAG_CHECK.
  Список шаблонов, устанавливаемый командой RDS_FORMVAL_LIST, имеет следующую структуру:
  - одна строка списка содержит один шаблон, строки списка разделяются символом перевода строки «\n» с кодом 10;
  - шаблон состоит из названия, видимого пользователю, за которым следует символ вертикальной черты «|» и набор масок имен файлов, разделенных точкой с запятой.
  Например, если требуется указать два шаблона, один из которых будет отображать в диалоге только текстовые файлы с расширениями «txt» и «log», а другой – все файлы, командой RDS_FORMVAL_LIST нужно передать в поле строку «Текстовые файлы|*.txt;*.log\nВсе файлы|*.*».
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_FORMVAL_UPDOWNMIN и RDS_FORMVAL_UPDOWNMAX, по умолчанию отключена. После ее включения ее можно снова отключить, передав в качестве минимального или максимального значения либо пустую строку при помощи функции rdsSetObjectStr, либо специальное значение-индикатор математической ошибки (возвращаемое функцией rdsGetHugeDouble) при помощи функции rdsSetObjectDouble.

Флаги полей ввода

Флаги поля ввода – это набор констант 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). По умолчанию все заголовки выравниваются по левому краю.