Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.19;
Скачать: CL | DM;

Вниз

Как осуществить подсветку?   Найти похожие ветки 

 
MSTX   (2003-06-06 08:50) [0]

Здравствуйте!

Хочу сделать HTML-редактор с функцией подсветки тегов. Для ввода текста выбрал TRichEdit. Вот кусок кода, который выделяет теги и значения атрибутов другими цветами:


var
I, K : LongInt;
Pos, Leng : LongInt;
begin
With RichEdit1 do
begin
I := 1;
while I <> Length(Text) do
begin
if Text[I] = "<" then
begin
Pos := I - 1;
while (Text[I] <> ">") and (I <> Length(Text)) do
I := I + 1;
Leng := I - Pos;
SelStart := Pos;
SelLength := Leng;
SelAttributes.Color := clRed;
end;
I := I + 1;
end;

I := 1;
while I <> Length(Text) do
begin
if Text[I] = """ then
begin
Pos := I - 1;
I := I + 1;
while (Text[I] <> """) and (I <> Length(Text)) do
I := I + 1;
Leng := I - Pos;
SelStart := Pos;
SelLength := Leng;
SelAttributes.Color := clBlue;
end;
I := I + 1;
end;
end;
end;


Есть одна БОЛЬШАЯ проблема: для "подсветки" текста из 11000 символов требуется 17 секунд (Celeron 1GHz, 256MB)! А что же мне делать при вводе нового текста? Может кто-нибудь подскажет более оптимальный код?


 
Юрий   (2003-06-06 09:19) [1]

Посмотри библиотеку SynEdit с исходниками.


 
MSTX   (2003-06-06 10:57) [2]

Что-то у меня не получается использовать этот компонент, а в исходниках вообще трудно разобраться...
Да и хотелось бы это сделать без каких-то левых компонентов, а пользуясь только Delphi"йскими инструментами...


 
Vulko ©   (2003-06-06 11:43) [3]


> Да и хотелось бы это сделать без каких-то левых компонентов,
> а пользуясь только Delphi"йскими инструментами

Так пиши всё сам.


 
Pavel Vasilenko   (2003-06-06 13:56) [4]

Вообще-то, Вам нужно ОДИН раз все "подсветить" только при загрузке, далее "подсвечивать" только редактируемую строку, использую SetAttributes. Вот и все :)


 
Pavel Vasilenko   (2003-06-06 14:01) [5]

Вообще-то, Вам нужно ОДИН раз все "подсветить" только при загрузке, далее "подсвечивать" только редактируемую строку, использую SetAttributes. Вот и все :)
А вообще, смотрите MSDN и сообщения для RichEdit, например EM_GETPARAFORMAT (это просто для ориентира)



Страницы: 1 вся ветка

Текущий архив: 2003.06.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
3-60015
delfin
2003-05-01 12:43
2003.06.19
DBGrid&Query - как правильно делать update НД


8-60274
Kair
2003-03-02 21:26
2003.06.19
Буферизация


9-60007
Tankist
2002-12-12 11:48
2003.06.19
из точку в точку по прямой.


3-60059
Vitas2
2003-05-28 14:08
2003.06.19
SQL2


14-60351
RIMMER
2003-06-02 10:30
2003.06.19
Экзамен уже сегодня...