|
Елементи керування
Текстовий редактор - Memo (модуль Ctl2)
Політівський текстовий редактор є майже повним аналогом Windows'ного поля Memo. Він так само дозволяє показувати та редагувати багаторядкові тексти, виконувати операції з блоками (за допомогою контекстного меню або гарячих клавіш). Але є у нього одна приємна особливість - політівський Memo розуміє кодировки DOS, Win1251, KOI та навіть при завантаженні файла автоматично визначає його кодировку.
Так само, як і з полем вводу InpLine, сам по собі Memo є дуже складним елементом керування (розмір його коду лише трохи менше за розмір коду кернела), але працювати з Memo просто.
Створення редактора
Function Memo_Create(Prog:PProg; VKind:TMemoKind;
Enabled:Boolean; Hint:String): PControl;
VKind - тип (режим роботи) редактора: mkEditable - звичайний, mkReadOnly - лише для читання.
Малювання редактора
Procedure Memo_Paint(Me:PControl;
VX1,VY1,VX2,VY2:Integer);
VX1, VY1, VX2, VY2 - координати поля.
Очистити редактор
Procedure Memo_Clear(Me:PControl);
Встановити тип редактора
Procedure Memo_SetKind(Me:PControl; VKind:TMemoKind);
VKind - тип (режим роботи) редактора: mkEditable - звичайний, mkReadOnly - лише для читання.
Встановити шрифт редактора
Procedure Memo_SetFont(Me:PControl; VFont:Pointer);
VFont - вказівник на шрифт. Шрифт - це просто відповідний файл формату RAF, як є завантажений у пам'ять. Для завантаження шрифтів дуже зручно юзати функцію завантаження ресурса Kernel.LoadRes, про яку я буду розповідати потім.
Завантажити файл у редактор
Procedure Memo_LoadFile(Me:PControl;
FName:String; ToClear:Boolean);
- FName - ім'я файла.
- ToClear - флажок: чи очищувати редактор перед завантаженням файла. True - завантажений файл заміняє текст, що був у редакторі раніше; False - вставити файл у позицію курсора.
Зберегти текст у редакторі
Procedure Memo_SaveToFile(Me:PControl; FName:String;
KeepWordWrap,SaveBAK,DoRecodeBack:Boolean);
- FName - ім'я файла, в якому буде збережений текст.
- KeepWordWrap - флажок, як розбивати текст на абзаци при збереженні: True - вставляти CR/LF (символ кінця абзаца) після рядків, на які текст зараз розбитий у вікні; False - вставляти CR/LF тільки в кінці абзаців. Рекомендую юзати False.
- SaveBAK - флажок, чи зберігати резервну копію файла. True - попередня версія файла зберігається із розширенням BAK, False - не робити резервну копію.
- DoRecodeBack - флажок, в якій кодировці зберігати файл: True - в якій він і був до завантаження, False - у кодировці DOS.
Взагалі-то найкращий приклад використання Memo - це політівський Записник, Notepad.pas. Там використовуються майже всі прийоми роботи з Memo і немає майже нічого зайвого. Хіба що робота з гарячими клавішами і вікном FileDlg, що вам теж в принципі не завадить. А можливо, я потім передумаю і все ж вигадаю окремий приклад...
| |