Вниз
Скачать: 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.043 c
1-1108728071
Луарвик
2005-02-18 15:01
2005.03.06
Панов - злюка!!!!!!!!! Я тебя ненавижу!


1-1108649106
Knoxville
2005-02-17 17:05
2005.03.06
Загрузка определенных данных с веб-страницы


14-1108032784
Игорь Шевченко
2005-02-10 13:53
2005.03.06
Microsoft готовится к реформе календаря ?


14-1108617817
Anonim
2005-02-17 08:23
2005.03.06
Подътягивание


3-1107515479
syte_ser78
2005-02-04 14:11
2005.03.06
бд в ехе




   Наверх