Форум — Ответы     (  К темам )
 ?  Виталий: редактор с подсветкой синтаксиса. (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();