Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.15;
Скачать: CL | DM;

Вниз

RichEdit и подсветка   Найти похожие ветки 

 
Artlav   (2007-12-03 21:57) [0]

Пытаюсь сделать подсветку синтаксиса внутри richedit поля, проблемы две:

Как определить, что было изменение какого-то конкретного участка?

И самое главное - как запретить перерисовку в процессе форматирования?
Т.е. процедура вроде
procedure replkw(var editscr:PControl;w:string;i:integer;cl:tcolor);
var p:integer;
begin
p:=0;
p:=PosEx(w,editscr.Items[i],p);
while p<>0 do begin
 editscr.SelStart:=editscr.item2Pos(i)+p-1;
 editscr.SelLength:=length(w);
 editscr.RE_FmtFontColor:=cl;
 p:=PosEx(w,editscr.Items[i],p+1);
end;
end;

Делает своё дело, а в это время на экране скачет курсор и возникает/исчезает выделение.


 
Дмитрий К ©   (2007-12-03 23:14) [1]


> как запретить перерисовку в процессе форматирования?

editscr.BeginUpdate;
//процесс форматирования
editscr.EndUpdate;


 
Artlav   (2007-12-04 00:28) [2]

Не помогло...
Точнее, курсор и выделение скакать перестали, но теперь при копи-пасте или удалении большого куска (перепроссчёт всего содержимого) скачет экран, а иногда и при простом и при полном просто смазывает всё - http://orbides.1gb.ru/orbf/thebug.jpg

Судя по всему я где-то делаю глупую ошибку.

procedure procsynt(var editscr:PControl);
var i,n:integer;
ss,sl:integer;
begin
editscr.BeginUpdate;

ss:=editscr.SelStart;
sl:=editscr.SelLength;

editscr.SelStart:=0;
editscr.SelLength:=99999999;
editscr.RE_FmtFontColor:=clblack;

n:=editscr.Pos2item(editscr.TextSize);
for i:=0 to n-1 do if length(editscr.Items[i])<>0 then procline(editscr,i);

editscr.SelStart:=ss;
editscr.SelLength:=sl;
 
editscr.EndUpdate;
end;


 
Artlav   (2007-12-09 19:36) [3]

Никто ничего не знает или это не возможно/я не там/не так спрашиваю?


 
PassedBy   (2007-12-11 01:12) [4]

Может LockWindowUpdate попробовать?


 
PassedBy   (2007-12-11 01:13) [5]

Кста.. Дай исходничек - поковыряю на досуге...



Страницы: 1 вся ветка

Текущий архив: 2009.02.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
2-1231171332
sh1k4r1
2009-01-05 19:02
2009.02.15
Excel + Delphi


2-1230824372
FdsKa
2009-01-01 18:39
2009.02.15
Каким образом можно осуществить


15-1229536053
БарЛог
2008-12-17 20:47
2009.02.15
Инвентаризация железа на компьютерах в домене по сети


15-1229444025
dumb
2008-12-16 19:13
2009.02.15
Некоректно отображаются иконки в Windows


15-1229374891
stas
2008-12-16 00:01
2009.02.15
Иконки из IE