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 = редактируемый текст
};
Внимание!
Указатель на структуру 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 организована по следующей схеме: