Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: 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 вся ветка

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
14-1108389364
Cosinus
2005-02-14 16:56
2005.03.06
Иконки для контактов(изображение телефонов, моб. тел, домов, )...


14-1108622797
Тульский
2005-02-17 09:46
2005.03.06
Телохранители


1-1108975451
snake_r
2005-02-21 11:44
2005.03.06
Закрытие формы


14-1108716632
syte_ser78
2005-02-18 11:50
2005.03.06
уменьшение значения переменной в цикле


4-1106054649
Tsio
2005-01-18 16:24
2005.03.06
Языковые ресурсы