DI_LISTBOX

Programming Far Manager plugins

DI_LISTBOX

Элемент диалога DI_LISTBOX описывает список.
struct FarDialogItem
{
  enum FARDIALOGITEMTYPES Type = DI_LISTBOX
  intptr_t X1                  = X1
  intptr_t Y1                  = Y1
  intptr_t X2                  = X2
  intptr_t Y2                  = Y2
  struct FarList *ListItems    = ListItems
  FARDIALOGITEMFLAGS Flags     = Flags
  const wchar_t *Data          = верхний заголовок списка
};

Внимание! Внимание!

  • Приведено схематичное изображение структуры; полное описание структуры см. здесь.

ListItems

Указатель на структуру FarList, описывающую пункты для начальной инициализации списка.

Флаги

Для элемента DI_LISTBOX имеют значения следующие флаги (про флаги списка см. FarListItem):
ФлагОписание
DIF_DEFAULTBUTTON флаг, означающий, что данный элемент диалога является "элементом по умолчанию"
DIF_FOCUS определяет, что при показе диалога установить клавиатурный фокус ввода на данный элемент
DIF_LISTAUTOHIGHLIGHT горячие клавиши будут назначены автоматически
DIF_LISTNOAMPERSAND показывать горячие клавиши в списке
DIF_LISTWRAPMODE "заворачивает" список при навигации по списку
DIF_LISTNOCLOSE не закрывать диалог при выборе элемента в списке
DIF_LISTTRACKMOUSE реагировать на движение мыши в списке
DIF_LISTTRACKMOUSEINFOCUS реагировать на движение мыши в списке только если элемент находится в фокусе
DIF_DISABLE элемент является недоступным
DIF_NOFOCUS управляющий элемент не получает клавиатурный фокус ввода
DIF_LISTNOBOX отключает прорисовку рамки вокруг списка. В этом случае Data игнорируется

События

СобытиеОписание
DN_DRAWDLGITEM начало отрисовки элемента
DN_CTLCOLORDLGLIST запрос цветовых атрибутов для отрисовки списка
DN_LISTCHANGE изменилась позиция в списке
DN_LISTHOTKEY пользователь для смены пункта в списке воспользовался горячими клавишами

Замечания

Работа со списками 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
    Ассоциированные данные уничтожаются (если было выделение по памяти)

Текстовый курсор после инициализации элемента - в режиме замены.

Смотрите также: