Вниз
Скачать: CL | DM;

Скроллинг при добавлении текста в Memo   Найти похожие ветки 

← →
Mouserx   (2005-02-21 16:41) [0]

Как остановить скроллинг текста при интенсивном добавлении текста в TMemo. Ну вот например я хочу сделать кнопочку Lock/UnLock.
Т.е при нажатии Lock - текст добавляеться но не мерцает на экране, не движеться, и скроллер не перемещаеться в конец TMemo.
Ну и для UnLock - обратное действие.

Мастера как это сделать?


← →
Семен Сорокин ©   (2005-02-21 16:47) [1]

TMemo.Lines.BeginUpdate/EndUpdate


← →
Mouserx   (2005-02-21 17:07) [2]


> Семен Сорокин ©   (21.02.05 16:47) [1]

Это используеться, когда необходимо добавить большой обьем текста, но не когда необходимо "залочить" скролер!

А у меня ситуация такая... Обьем текста очень большой... все время добавляеться чтото новое в конец TMemo.. Читать конечно неудобно, потому что каждый раз когда добавляеться - скролер бежит в конец TMemo.

Я хочу сделать кнопочку, нажав на которую можно было спокойно читать текст и двигать скролер куда я хочу. При этом чтобы текст так и продолжал добавляться в конец TMemo.


← →
Mouserx   (2005-02-21 18:23) [3]

Подскажите пожалуйста как это сделать.


← →
Семен Сорокин ©   (2005-02-21 18:27) [4]

дык [1] чем не подходит?


← →
Mouserx   (2005-02-21 18:49) [5]


> Семен Сорокин ©   (21.02.05 18:27) [4]

Потому, что когда читаешь текст  - охота еще и скроллер двигать. А после BeginUpdate замирает скроллер тоже. Мне же необходимо чтобы позиция текста не изменялась когда добавляеться новый текст и можно было и читать удобно и двигать скроллер!


← →
Alexander Panov ©   (2005-02-21 19:12) [6]

При нжатии кнопки lock текст начинает добавляться не в Memo, а, например, в TStringList.

После нажатия UnLock текст из StringList добавляется в конец Memo, следующие строки добавляются в Memo.


← →
a.denisov   (2005-02-21 19:47) [7]


> Alexander Panov ©   (21.02.05 19:12) [6]

Только добавлять из StringList в обработчике WM_VSCROLL, когда пользователь передвигает ползунок к самый низ. А бы сделал так.


← →
a.denisov   (2005-02-21 21:09) [8]

procedure TForm1.MemoWndProc(var Message: TMessage);
var
 SI                : TScrollInfo;
begin
 if Message.Msg = WM_VSCROLL then
   case Message.WParamLo of
     SB_LINEDOWN, SB_ENDSCROLL: with Memo1 do begin
         SI.cbSize := SizeOf(SI);
         SI.fMask := SIF_ALL;
         GetScrollInfo(Handle, SB_VERT, SI);
         if SI.nPos >= SI.nMax - Integer(SI.nPage) then begin
           Lines.AddStrings(FStringList);
           FStringList.Clear;
         end;
       end;
   end;
 MemoWindowProc(Message);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 FStringList := TStringList.Create;
 MemoWindowProc := Memo1.WindowProc;
 Memo1.WindowProc := MemoWndProc;
end;



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.023 c
1-1108894737
XES
2005-02-20 13:18
2005.03.06
Не запускается


1-1108626509
Gost
2005-02-17 10:48
2005.03.06
Что за тип - Currency?


10-1085398909
Koster
2004-05-24 15:41
2005.03.06
Как использовать в Delphi тип, объявленный внутри OLE объекта?


14-1108128517
msguns
2005-02-11 16:28
2005.03.06
Кругом 500


6-1104150481
Oleggar
2004-12-27 15:28
2005.03.06
передача данных




   Наверх