Конференция "KOL" » RichEdit и подсветка [Delphi, KOL, Windows]
 
  • Artlav (03.12.07 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;


    Делает своё дело, а в это время на экране скачет курсор и возникает/исчезает выделение.
  • Дмитрий К © (03.12.07 23:14) [1]

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

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

  • Artlav (04.12.07 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 (09.12.07 19:36) [3]
    Никто ничего не знает или это не возможно/я не там/не так спрашиваю?
  • PassedBy (11.12.07 01:12) [4]
    Может LockWindowUpdate попробовать?
  • PassedBy (11.12.07 01:13) [5]
    Кста.. Дай исходничек - поковыряю на досуге...
 
Конференция "KOL" » RichEdit и подсветка [Delphi, KOL, Windows]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]