Форум — Ответы ( К темам )
? | Виталий: редактор с подсветкой синтаксиса. (16-12-2002 12:02:15) |
Хочу написать редактор с подсветкой синтаксиса. Для этого беру TRichEdit и пишу обработчик события OnChange { Запоминаю начальное положение курсора RichEdit->SelStart; Для ускорения создаю строку char* в которую помещаю содержимое RichEdit->Text; В цикле нахожу нужные мне слова и кращу их в нужный цвет следующим образом: { RichEdit->SelStart=начальная позиция нужного слова; RichEdit->SelLength=длина слова; Устанавливаю RichEdit->SelAttributes->Color=нужный цвет; } Восстанвливаю начальное положение курсора; } Работает довольн шустро за исключением двух недостатков: 1) Изображение в RichEdit-е при вводе блымает. 2) Пропадает возможность делать Undo Может есть кто что-нибудь посоветует? | |
Павел (21-12-2002 22:09:05) | |
По поводу Undo - 1. Можно использовать компонент RxRichEdit из RXLib, почитайте к нему help, он позволяет делать многоуровневые операции undo/redo 2. Можно организовать Undo и самому, например через STL стек #include <stack.h> class UND{ public: TStringList* sl; int ss; ... // и все что хотите еще запомнить, можно поместить сюда } un; stack <UND> stk; Запоминаем при каком-либо определенном событии un.sl = new TStringList(); un.sl->AddStrings(RichEdit1->Lines); un.ss = RichEdit1->SelStart; stk.push(un); Восстанавливаем из стека un = stk.top(); RichEdit1->Lines = un.sl; RichEdit1->SelStart = un.ss; delete un.sl; stk.pop(); |