![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
прокрутка РичЕдит
Dmitrij_K © (2005-10-31 11:04:00)привет,
в риче надо запомнить позицию курсора и скрол бара, чтобы после изменений текста полностью восстановить картинку
делаю так, но прокручивается не на то место где было
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;
помогите пожалуйста
Dmitrij_K (2005-10-31 15:01:00) [1]огромное спасибо
работает
Leonid Troyanovsky (2005-10-31 14:48:00) [2]
> 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 12:45:00) [3]координаты курсора я могу сохранить и восстановить, а вот положение скрола не получается
(
Leonid Troyanovsky (2005-10-31 11:59:00) [4]
> Dmitrij_K (31.10.05 11:04)
> в риче надо запомнить позицию курсора и скрол бара, чтобы
> после изменений текста полностью восстановить картинку
Вообще-то, у RichEdit есть SelStart, SelLength.
А для управления скролом служат сообщения EM_SCROLL*.
--
Regards, LVT.