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

Вниз

прокрутка РичЕдит   Найти похожие ветки 

 
Dmitrij_K   (2005-10-31 11:04) [0]

привет,
в риче надо запомнить позицию курсора и скрол бара, чтобы после изменений текста полностью восстановить картинку
делаю так, но прокручивается не на то место где было

procedure RESaveSelPos(re:TRichEdit);
begin
 re.Perform(EM_GETSEL, INTEGER(@save_sel.selstart), INTEGER(@save_sel.selend));
 save_sel.line_nom := re.Perform(EM_LINEFROMCHAR, save_sel.selstart,0);
 save_sel.scroll := GetScrollPos(re.Handle, SB_VERT);
end;

procedure REloadSelPos(re:TRichEdit;bol:Boolean);
var g:Integer;
begin
 if bol then re.Perform(EM_SETSEL, save_sel.selstart, save_sel.selend)
        else begin
               g := re.Perform(EM_LineIndex, save_sel.line_nom, 0);
               re.Perform(EM_SETSEL,g,g);
             end;
 SetScrollPos(re.Handle, SB_VERT, save_sel.scroll, false);
end;


помогите пожалуйста


 
Leonid Troyanovsky ©   (2005-10-31 11:59) [1]


> Dmitrij_K   (31.10.05 11:04)  

> в риче надо запомнить позицию курсора и скрол бара, чтобы
> после изменений текста полностью восстановить картинку


Вообще-то, у RichEdit есть SelStart, SelLength.
А для управления скролом служат сообщения EM_SCROLL*.

--
Regards, LVT.


 
Dmitrij_K   (2005-10-31 12:45) [2]

координаты курсора я могу сохранить и восстановить, а вот положение скрола не получается
(


 
Leonid Troyanovsky ©   (2005-10-31 14:48) [3]


> Dmitrij_K   (31.10.05 12:45) [2]
> координаты курсора я могу сохранить и восстановить, а вот
> положение скрола не получается



var
 SavedRange : TCharRange;
 Line : Longint;

 {сохраняем}
 RichEdit1.Perform( EM_EXGETSEL, 0, LParam(@SavedRange));
 Line :=  RichEdit1.Perform(EM_GETFIRSTVISIBLELINE, 0, 0);

 ..

{восстанавливаем}
 RichEdit1.Perform( EM_EXSETSEL, 0, LParam(@SavedRange));
 RichEdit1.Perform( EM_LINESCROLL,
                    0,
                    Line-RichEdit1.Perform(EM_GETFIRSTVISIBLELINE, 0, 0));


 Возможно, что пригодится:
 RichEdit1.Perform(WM_SETREDRAW, WParam(False), 0);
 RichEdit1.Perform(WM_SETREDRAW, -1, 0);

--
Regards, LVT.


 
Dmitrij_K   (2005-10-31 15:01) [4]

огромное спасибо
работает



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

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

Наверх




Память: 0.47 MB
Время: 0.037 c
14-1131517278
Lamer@fools.ua
2005-11-09 09:21
2005.11.27
В Киеве уже который день туман


1-1131018624
ancot
2005-11-03 14:50
2005.11.27
Прозрачный TWinControl


2-1131802956
zxc
2005-11-12 16:42
2005.11.27
Народ подскажите неопытному


14-1130860799
oleggar
2005-11-01 18:59
2005.11.27
clipper 5.3


14-1131009962
Dimedrol
2005-11-03 12:26
2005.11.27
Автоматизация SSH