DI_TEXT

Programming Far Manager plugins

DI_TEXT

Элемент диалога DI_TEXT описывает статическую текстовую строку. В понятиях WinAPI это управляющий элемент STATIC.
struct FarDialogItem
{
  enum FARDIALOGITEMTYPES Type = DI_TEXT
  intptr_t X1                  = X1
  intptr_t Y1                  = Y
  intptr_t X2                  = X2
  intptr_t Y2                  = Y (равен значению Y1)
  const wchar_t *Mask          = Mask
  FARDIALOGITEMFLAGS Flags     = Flags
  const wchar_t *Data          = выводимый текст
};

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

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

Mask

Поле используется только с флагом DIF_SEPARATORUSER, может быть NULL, или указывать на строку, содержащую набор из трех символов, описывающих формируемую разделительную линию.

Флаги

Для элемента DI_TEXT имеют значения следующие флаги:
ФлагОписание
DIF_BOXCOLOR текст будет иметь цвет рамок (COL_DIALOGBOX или COL_WARNDIALOGBOX)
DIF_CENTERGROUP центрирование двух текстовых строк с одинаковой вертикальной позицией (параметр X1 игнорируется)
DIF_SEPARATOR горизонтальный разделитель диалога (одинарная линия); координата X1 не используется для случая, когда Data пустая строка;
если Data не пустая строка, то она также будет отрисована (для вывода строки будет использована координата X1);
DIF_SEPARATOR2 горизонтальный разделитель диалога (двойная линия); координата X1 не используется для случая, когда Data пустая строка;
если Data не пустая строка, то она также будет отрисована (для вывода строки будет использована координата X1);
DIF_SEPARATORUSER горизонтальный разделитель диалога (формат линии указан в Mask); должны быть указаны обе координаты X1 и X2
DIF_SHOWAMPERSAND показывать в текстовой строке амперсанд не используя его для определения горячей клавиши
DIF_CENTERTEXT выравнивать текст по центру относительно координат X1 и X2
DIF_RIGHTTEXT выравнивать текст по правому краю относительно координат X1 и X2
DIF_WORDWRAP усекает очередное слово в тексте элемента, если оно не вмещается по ширине, учитываются все координаты элемента X1,X2,Y1,Y2

События

СобытиеОписание
DN_DRAWDLGITEM начало отрисовки текстовой строки
DN_CTLCOLORDLGITEM запрос цветовых атрибутов для отрисовки; Param2:
Colors[0] - текст
                (COL_WARNDIALOGTEXT или COL_DIALOGTEXT
              при выставленном флаге DIF_BOXCOLOR:
                COL_WARNDIALOGBOX или COL_DIALOGBOX)
Colors[1] - выделенный текст (highlighting text)
                (COL_WARNDIALOGHIGHLIGHTTEXT или COL_DIALOGHIGHLIGHTTEXT)
Colors[2] - 0 (не используется)
Colors[3] - 0 (не используется)
DN_CONTROLINPUT "кликнули" клавишей мыши
DN_HOTKEY горячая клавиша (Alt+Символ)

Замечания

  1. Хотя координата Y2 в Dialog API не используется, но для нормальной работы в будущих версиях Far Manager желательно корректно заполнить значение этого поля. Укажите то же значение координаты, что и Y1.
  2. Если указан флаг DIF_SEPARATORUSER, то координаты X1 и X2 должны быть обязательно указаны, в противном случае действие флага не будет иметь действия.
  3. Если указан флаг DIF_SEPARATORUSER, то в поле Mask Far Manager ожидает 3 символа "Лево-Середина-Право". Недостающие (до 3-х) символы для такой разделительной лини будут содержать пробелы.
  4. Если указан флаг DIF_CENTERTEXT, то координата X2 должна быть обязательно указана, в противном случае действие флага не будет иметь действия.
  5. Если не указан флаг DIF_CENTERTEXT, то Far Manager самостоятельно перерасчитает координаты X2 и Y2, исходя из размера строки и размера диалога.
  6. Если элемент в массиве управляющих элементов стоит первым, то консольное окно Far Manager будет содержать заголовок "выводимый текст".
  7. Если в тексте элемента DI_TEXT имеется "горячая клавиша" (HotKey) и не выставлен флаг DIF_SHOWAMPERSAND, то при нажатии в диалоге Alt+Символ клавиатурный фокус ввода перейдёт на следующий элемент, который может иметь фокус ввода
Смотрите также: