Главная страница
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.48 MB
Время: 0.016 c
4-60463
YuVoUA
2003-04-14 14:09
2003.06.19
HELP_CONTEXTPOPUP


1-60159
malefik
2003-06-06 19:49
2003.06.19
Проверка существования обьекта???Перехват окном нажатие клавиши..


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


6-60308
vi7777
2003-04-11 12:18
2003.06.19
При уничтожении формы с WebBrowser вылетает куча консолей !


14-60391
Мазут Береговой
2003-06-02 20:52
2003.06.19
Хотите узнать о мед.обслуживании в США? Читайте здесь: