Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
1-60163
Drin
2003-06-07 02:28
2003.06.19
TListView


3-60019
Инна
2003-05-25 17:18
2003.06.19
PopupMenu над DBGrid


3-60061
ss300
2003-05-28 13:48
2003.06.19
Вычисление суммы по группам


14-60332
Леша
2003-05-31 18:00
2003.06.19
QReport! Есть ли фильтры для экспорта в Word и Excel?


1-60207
OlegNOE
2003-06-05 13:04
2003.06.19
Дочернее окно




   Наверх