Главная страница
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-1230939157
Single
2009-01-03 02:32
2009.02.15
Приведение типов


2-1230721519
demon
2008-12-31 14:05
2009.02.15
Как узнать создан ли класс?


2-1231144302
zzz
2009-01-05 11:31
2009.02.15
SysMenu


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


2-1230627520
LDV
2008-12-30 11:58
2009.02.15
SystemMenu