Главная страница
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.027 c
2-1131438558
DevMaster
2005-11-08 11:29
2005.11.27
TadvStringGrid (TMS) - проблемма с памятью


14-1131370334
WondeRu
2005-11-07 16:32
2005.11.27
Почему нет слэша в тэге <img>?


8-1120430070
Fantasy
2005-07-04 02:34
2005.11.27
помогите DSPack


1-1130941441
Владислав
2005-11-02 17:24
2005.11.27
Размещение экземпляра класса по заданному адресу.


6-1122966884
ZAV
2005-08-02 11:14
2005.11.27
Как при помощи IDFTP узнать дату изменения файла