Главная страница
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.033 c
11-60102
sapsan
2002-09-25 19:43
2003.06.19
Не работает OnClick в TKOLListBox


14-60375
Юрий Зотов
2003-06-02 15:51
2003.06.19
Купи - продам!


1-60132
ewgeny
2003-06-06 13:59
2003.06.19
Как вызвать в DLL метод объекта приложения ?


1-60196
Шнурок
2003-06-05 08:06
2003.06.19
Как в делфи работать со страницей?


1-60183
Newman
2003-06-04 23:47
2003.06.19
Размер MDIChild