Главная страница
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.059 c
5-1113565924
имя
2005-04-15 15:52
2005.11.27
Внимание Подлог!!!


3-1129265104
iamkate
2005-10-14 08:45
2005.11.27
Проблемы с загрузкой данных из потока


2-1131712228
Andrewmx
2005-11-11 15:30
2005.11.27
Как найти минимальный элемент в двумерном массиве?


14-1129969212
useroff
2005-10-22 12:20
2005.11.27
зацените мой сайт narisoval.net.ua


2-1131275441
zaN0za
2005-11-06 14:10
2005.11.27
Integer->PChar->Integer. как?