DI_COMBOBOX
Элемент диалога
DI_COMBOBOX
описывает поле ввода со списком (комбинированный список).
struct FarDialogItem { enum FARDIALOGITEMTYPES Type = DI_COMBOBOX intptr_t X1 = X1 intptr_t Y1 = Y intptr_t X2 = X2 intptr_t Y2 = Y (равен значению Y1) struct FarList *ListItems = ListItems FARDIALOGITEMFLAGS Flags = Flags const wchar_t *Data = редактируемый текст };
Внимание!
- Приведено схематичное изображение структуры; полное описание структуры см. здесь.
ListItems
Указатель на структуру FarList, описывающую пункты для начальной инициализации комбинированного списка.
Редактируемое поле заполняется значением первого пункта списка с установленным флагом LIF_SELECTED
при условии, что Data
не содержит "редактируемый текст" и есть хотя бы один элемент списка с таким флагом. Если таких пунктов несколько, берётся первый.
Если значение равно NULL
, то список выводится не будет.
Флаги
Для элемента
DI_COMBOBOX
имеют значения следующие флаги (про флаги списка см. FarListItem):
Флаг | Описание |
---|---|
DIF_DEFAULTBUTTON | флаг, означающий, что данный элемент диалога является "элементом по умолчанию" |
DIF_FOCUS | определяет, что при показе диалога установить клавиатурный фокус ввода на данный элемент |
DIF_DROPDOWNLIST | стиль не редактируемого раскрывающегося списка - DropDownList |
DIF_EDITEXPAND | "расширять" переменные среды |
DIF_EDITPATH | строка ввода будет содержать имена реальных файловых объектов |
DIF_LISTAUTOHIGHLIGHT | горячие клавиши будут назначены автоматически |
DIF_LISTNOAMPERSAND | показывать горячие клавиши в списке |
DIF_LISTWRAPMODE | "заворачивает" список при навигации по списку |
DIF_DISABLE | элемент является недоступным |
DIF_READONLY | переводит строки редактирования в состояние "только для чтения" |
DIF_SELECTONENTRY | выделить редактируемый текст при получении фокуса ввода |
DIF_NOFOCUS | управляющий элемент не получает клавиатурный фокус ввода |
События
Событие | Описание |
---|---|
DN_DRAWDLGITEM | начало отрисовки текстовой строки |
DN_CTLCOLORDLGITEM | запрос цветовых атрибутов для отрисовки строки редактирования комбинированного списка; Param2 :
|
DN_CTLCOLORDLGLIST | запрос цветовых атрибутов перед отрисовкой открытого комбинированного списка |
DN_CONTROLINPUT | нажали клавиатурную клавишу или кликнули клавишей мыши |
DN_LISTHOTKEY | пользователь для смены пункта в открытом комбинированном списке воспользовался горячими клавишами |
DN_EDITCHANGE | текст изменён |
DN_KILLFOCUS | элемент потерял фокус (при условии, что не используется флаг DIF_NOFOCUS) |
DN_GOTFOCUS | элемент получил фокус (при условии, что не используется флаг DIF_NOFOCUS) |
Замечания
Работа со списками
DI_COMBOBOX
и DI_LISTBOX
организована по следующей схеме:
- Запуск DialogInit
FarDialogItem.Param.ListItems - только для начальной инициализации.
- DM_LISTADD
Добавляет только пункт списка, без ассоциированных данных
- DM_LISTINSERT
Вставляет только пункт списка, без ассоциированных данных
- DM_LISTUPDATE
Удаляет UserData для обновляемого пункта списка.
Только обновление данных пункта списка без ассоциированных данных
- DM_LISTSETDATA
Перед установкой новых ассоциированных данных предыдущие уничтожаются (если было выделение по памяти)
- DM_LISTGETDATA
Возвращается значение, предварительно установленное DM_LISTSETDATA.
- DM_LISTGETDATASIZE
Возвращается размер ассоциированных данных.
- DM_LISTGETITEM
Возвращает только пункт списка, без ассоциированных данных.
- Завершение DialogFree
Ассоциированные данные уничтожаются (если было выделение по памяти)
Смотрите также: