Главная страница
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.012 c
2-1230325419
programmer90
2008-12-27 00:03
2009.02.15
Хочу большие String-и:)


2-1230541525
Nobody
2008-12-29 12:05
2009.02.15
Как сделать переход по известному адресу


4-1205580795
Леха
2008-03-15 14:33
2009.02.15
Ловушки(Hook)


2-1230973748
studenttgata
2009-01-03 12:09
2009.02.15
Как получить относительный путь к файлу через OpenDialog?


2-1231004012
N_SSS
2009-01-03 20:33
2009.02.15
Помогите исправить ошибку! -Координаты Х, У для события DblClick