Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизHTML - подсветка синтаксиса в TRichEdit, оптимизация. Найти похожие ветки
← →
able © (2004-03-03 17:48) [0]Здраствуйте, ув. Мастера! Я, для подстветки HTML тэгов использую следующую процедуру:
procedure HTMLSyntax(RichEdit: TRichEdit; TextCol,
TagCol, DopCol: TColor);
var
i, iDop: Integer;
s: string;
Col: TColor;
isTag, isDop: Boolean;
a:Tpoint;
begin
a:=RichEdit.CaretPos;
iDop := 0;
isDop := False;
isTag := False;
Col := TextCol;
RichEdit.SetFocus;
for i := 0 to Length(RichEdit.Text) do
begin
RichEdit.SelStart := i;
RichEdit.SelLength := 1;
s := RichEdit.SelText;
if (s = "<") or (s = "{") then isTag := True;
if isTag then
if (s = """) then
if not isDop then
begin
iDop := 1;
isDop := True;
end
else
isDop := False;
if isTag then
if isDop then
begin
if iDop <> 1 then Col := DopCol;
end
else
Col := TagCol
else
Col := TextCol;
RichEdit.SelAttributes.Color := Col;
iDop := 0;
if (s = ">") or (s = "}") then isTag := False;
RichEdit.CaretPos:=a;
end;
RichEdit.SelLength := 0;
end;
Всё бы хорошо, но когда загружаю HTML - file (пускай и не слишком большой) программка благополучно виснет. Может как-нить можно её оптимизировать? Заранее спасибо :)
← →
TUser © (2004-03-03 18:26) [1]1. for i := 1 to Length(RichEdit.Text) do
2. Для того чтобы получить символ - не надо его выделять. RichEdit1.text[i]
3. Все это лучщен оформить через case. В какой-нибудь переменной сохранять инфу о том, что мы сейчас пармим - таг, цитату или текст.
4. Написать Lines.BeginUpdate/Lines.EndUpdate
5. CaretPos - ваще не знаю, зачем ты ее устанавливаешь.
Кроме п. 1 принципиальных ошибок я не заметил, но читал я не очень внимательно.
← →
able © (2004-03-03 21:26) [2]1. хмм... а в чём ошибка?? :)
2. спасиб
3. ок.. попробую
4. ну это не слишком важно.. у меня вызывается так:
Richedit.lines.beginupdate;
procedure HTMLSyntax(..);
Richedit.lines.endupdate;
5. Ну енто HTMl - редактор.. думаю User"у будет не приятно после каждого введёного символа опять ставить каретку в нужное положение (так она ставится в конец).
← →
TUser © (2004-03-03 21:45) [3]1. Text - это строка, там символы нумеруются, начиная с 1
← →
Gero © (2004-03-03 21:51) [4]> able © (03.03.04 21:26) [2]
Если пишешь html-редактор, не мучайся - иcпользуй SynEdit!
Из твоей затеи врядли что-то выйдет: написать нормальную подсветку синтаксиса не так-то просто, особенно когда плохо знаешь даже азы. Да и RichEdit очень глючный по своей природе.
← →
TUser © (2004-03-03 21:54) [5]Могу еще порекомендовать TJvHLEdit, кажется так он называется.
← →
able © (2004-03-04 12:42) [6]>Gero ©
>TUser ©
Спасибо, учту)). И не буду задаваться вопросами, где взять эти компоненты))
← →
able © (2004-03-05 12:30) [7]а где из взять-то?? а то все платные :(
← →
TUser © (2004-03-05 12:35) [8]http://jcl.sourceforge.net/
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c