Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.28. Вспомогательный объект для работы с модальными окнами
А.5.28.27. Команда RDS_FORMVAL_VALUE – значение поля
Команда RDS_FORMVAL_VALUE устанавливает или возвращает значение поля ввода. Возможные значения и способ их установки и получения зависят от конкретных типов полей ввода.
Вызов команды для установки
int iCtrlId= … // Идентификатор поля ввода int iValue= … // Значение rdsSetObjectInt(Win,iCtrlId,RDS_FORMVAL_VALUE,iValue);
или
int iCtrlId= … // Идентификатор поля ввода double dValue= … // Значение rdsSetObjectDouble(Win,iCtrlId,RDS_FORMVAL_VALUE,dValue);
или
int iCtrlId= … // Идентификатор поля ввода RDSCSTR sValue= … // Значение в виде строки (UTF8) rdsSetObjectStrA(Win,iCtrlId,RDS_FORMVAL_VALUE,sValue);
или
int iCtrlId= … // Идентификатор поля ввода RDSWCSTR sValue= … // Значение в виде строки (UTF16) rdsSetObjectStrW(Win,iCtrlId,RDS_FORMVAL_VALUE,sValue);
или (через функцию-псевдоним)
int iCtrlId= … // Идентификатор поля ввода RDSXCSTR sValue= … // Значение в виде строки (кодировка по умолчанию) rdsSetObjectStr(Win,iCtrlId,RDS_FORMVAL_VALUE,sValue);
Вызов команды для чтения
int iCtrlId= … // Идентификатор поля ввода int iValue=rdsGetObjectInt(Win,iCtrlId,RDS_FORMVAL_VALUE);
или
int iCtrlId= … // Идентификатор поля ввода double dValue=rdsGetObjectDouble(Win,iCtrlId,RDS_FORMVAL_VALUE);
или
int iCtrlId= … // Идентификатор поля ввода RDSCSTR sValue=rdsGetObjectStrA(Win,iCtrlId,RDS_FORMVAL_VALUE); // UTF8
или
int iCtrlId= … // Идентификатор поля ввода RDSWCSTR sValue=rdsGetObjectStrW(Win,iCtrlId,RDS_FORMVAL_VALUE); // UTF16
или (через функцию-псевдоним)
int iCtrlId= … // Идентификатор поля ввода RDSXCSTR sValue=rdsGetObjectStr(Win,iCtrlId,RDS_FORMVAL_VALUE); // Кодировка по умолчанию
Параметры и результат
- Win (RDS_HOBJECT)
- Идентификатор вспомогательного объекта для работы с модальным окном, ранее созданного функцией rdsFORMCreate.
- iCtrlId (int)
- Целый идентификатор поля ввода, присвоенный ему при вызове функции rdsFORMAddEdit.
- iValue (int)
- Значение поля в виде целого числа.
- dValue (double)
- Значение поля в виде вещественного числа.
- sValue (RDSCSTR, RDSWCSTR, RDSXCSTR)
- Указатель на строку, в которой записано значение поля. При получении значения функцией rdsGetObjectStr в данном случае возвращается указатель на строку во внутренней памяти объекта Win, этот указатель будет действителен до тех пор, пока значение поля не изменится.
Примечания
Для передачи команды полю ввода можно использовать целые функции rdsSetObjectInt и rdsGetObjectInt, вещественные rdsSetObjectDouble и rdsGetObjectDouble, а также строковые rdsSetObjectStr и rdsGetObjectStr – тип используемых функция зависит только от того, в каком виде удобнее передавать значение полю или получать его из поля.
При использовании команды для разных типов полей ввода следует учитывать следующие особенности:
- для полей ввода RDS_FORMCTRL_EDIT, RDS_FORMCTRL_COMBOEDIT, RDS_FORMCTRL_DISPLAY, RDS_FORMCTRL_MULTILINE, RDS_FORMCTRL_UPDOWN, RDS_FORMCTRL_NONVISUAL значение записывается в поле ввода и считывается оттуда непосредственно (все эти поля имеют в своем составе единственное поле ввода);
- для поля ввода RDS_FORMCTRL_COMBOLIST значением, в зависимости от использованной функции, является либо номер выбранного в выпадающем списке варианта (варианты нумеруются начиная с нуля), либо его текст: функции rdsGetObjectStr и rdsGetObjectDouble возвращают само значение поля (текст варианта), функция rdsGetObjectInt возвращает номер варианта, все три функции rdsSetObjectInt, rdsSetObjectDouble и rdsSetObjectStr устанавливают номер варианта;
- для полей-переключателей типа RDS_FORMCTRL_CHECKBOX и RDS_FORMCTRL_RADIOBUTTON значением всегда является целое число – ноль, если флаг выключен, и единица (любое ненулевое значение), если флаг включен;
- для двойного поля ввода диапазона RDS_FORMCTRL_RANGEEDIT значением является содержимое левого поля ввода (начала диапазона), для доступа к значению правого поля используется команда RDS_FORMVAL_RANGEMAX;
- для полей открытия и сохранения файла RDS_FORMCTRL_OPENDIALOG и RDS_FORMCTRL_SAVEDIALOG, а также для поля выбора папки RDS_FORMCTRL_DIRDIALOG значением является имя файла (папки) с путем, в котором пути к стандартным папкам RDS заменены на их символические обозначения;
- для поля выбора цвета RDS_FORMCTRL_COLOR значением является выбранный цвет в виде целого числа, то есть стандартный тип Windows COLORREF, приведенный к типу int;
- для поля выбора шрифта RDS_FORMCTRL_FONTSELECT значением является текст описания шрифта, подобный формируемому функцией rdsStructToFontText и разбираемому функцией rdsFontTextToStruct;
- для двойного поля ввода RDS_FORMCTRL_LISTANDEDIT значением является содержимое основного (правого) поля ввода, а для доступа к номеру варианта, выбранного в списке слева от него, используется команда RDS_FORMVAL_AUXLISTITEM;
- для поля ввода кода клавиши RDS_FORMCTRL_HOTKEY значением является сам код клавиши (или ноль, если код не введен) без флагов состояния служебных клавиш Ctrl, Alt и Shift – для доступа к этим флагам используется команда RDS_FORMVAL_HKSHIFTS;
- для кнопки RDS_FORMCTRL_BUTTON значением является текст на кнопке, пользователь не может его изменить;
- поля RDS_FORMCTRL_LABEL и RDS_FORMCTRL_PAINTBOX не имеют значения, поэтому вызов для них команды RDS_FORMVAL_VALUE не имеет смысла.
Пример
Пример использования команды RDS_FORMVAL_VALUE приведен в руководстве программиста: §2.7.2, §2.7.4 и др.
См. также
rdsFORMCreate, rdsFORMAddEdit, типы и флаги полей ввода, rdsSetObjectInt, rdsGetObjectInt, rdsSetObjectDouble, rdsGetObjectDouble, rdsSetObjectStr, rdsGetObjectStr.