Вниз
Скачать: 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.022 c
1-1108659158
Tack
2005-02-17 19:52
2005.03.06
ограничить размер лог-файла программы


8-1100674381
11111
2004-11-17 09:53
2005.03.06
Какие параметры цвета (в системе RGB) стандартной формы?


1-1109155839
ТехникПТО
2005-02-23 13:50
2005.03.06
Загрузка картинок в TImage


4-1106413640
Engy
2005-01-22 20:07
2005.03.06
Заголовок активного окна


1-1108732178
_alex_
2005-02-18 16:09
2005.03.06
Как создать невидимую форму




   Наверх