# 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`+`Символ` клавиатурный фокус ввода перейдёт на следующий элемент, который может иметь фокус ввода

Смотрите также:
DI_VTEXT, FarDialogItem