Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "KOL";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
2-1231144302
zzz
2009-01-05 11:31
2009.02.15
SysMenu


15-1225125372
oxffff
2008-10-27 19:36
2009.02.15
Новости Delphi PRISM


15-1229694358
Xsh1
2008-12-19 16:45
2009.02.15
Сложная пятничная задачка с взвешивания


2-1231259024
Семён
2009-01-06 19:23
2009.02.15
Как обратиться к компоненту на форме по номеру?


2-1230991906
demon
2009-01-03 17:11
2009.02.15
Падсказка над иконкой в трее





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский