EditorSelect
Структура
EditorSelect
используется в функции EditorControl для выделения или снятия выделения с текста в редакторе Far Manager.
struct EditorSelect { size_t StructSize; intptr_t BlockType; intptr_t BlockStartLine; intptr_t BlockStartPos; intptr_t BlockWidth; intptr_t BlockHeight; };
Элементы
StructSize
Это поле должно содержать размер структуры
EditorSelect
. Перед использованием структуры плагин должен заполнить поле.BlockType
Одно из следующих значений (перечисление EDITOR_BLOCK_TYPES):
Если
Тип блока | Описание |
---|---|
BTYPE_NONE | снять выделение с блока |
BTYPE_STREAM | выделить строковой блок |
BTYPE_COLUMN | выделить вертикальный блок |
BlockType = BTYPE_NONE
, другие поля этой структуры не важны.
BlockStartLine
Первая строка блока. Можно установить это поле в
-1
- началом блока будет текущая строка.BlockStartPos
Начальная позиция блока. Если
BlockStartPos = -1
, то выделение блока снимается.BlockWidth
Ширина блока. Может быть отрицательной величиной.
BlockHeight
Высота блока. Должна быть >= 1.
Замечания
- Функция EditorControl вернёт
FALSE
, если:- размер передаваемой переменной меньше размера структуры
EditorSelect
; BlockHeight
меньше 1;BlockStartLine
больше количества строк в редакторе.
- размер передаваемой переменной меньше размера структуры
Пример
Программно строковый блок от (X1,Y1) до (X2,Y2) можно выделить так:
es.BlockType=BTYPE_STREAM; es.BlockStartLine=min(Y2,Y1); es.BlockStartPos=(Y1 < Y2?X1:X2); // небольшая коррекция, если позиции равны if(X1 == X2) es.BlockStartPos+=(Y1 < Y2?1:-1); es.BlockHeight=max(Y1,Y2)-min(Y1,Y2)+1; if(Y1 < Y2) es.BlockWidth=X2-X1+1; else es.BlockWidth=X1-X2+1; if(X1 == X2) { if(Y1 < Y2) es.BlockStartPos--; else es.BlockStartPos++; } Info.EditorControl(-1,ECTL_SELECT,0,(void*)&es);
Смотрите также: