Главная страница
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.015 c
14-60359
- = LAN = -
2003-06-01 15:34
2003.06.19
Как зайти на нерасшаренный диск в локалке?


7-60448
BaDeVlad
2003-04-14 14:41
2003.06.19
Как узнать время последней активности пользователя?


7-60442
Zirus
2003-04-15 10:06
2003.06.19
Возведение в степень


4-60466
b_Alex
2003-04-18 17:20
2003.06.19
Рисование


14-60341
Артем К
2003-06-02 10:27
2003.06.19
Подскажите где можно достать исходник простенького транслятора?