Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Mouserx ©   (2005-02-21 16:41:00) 

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

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


a.denisov   (2005-02-21 21:09:00) [1]

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;


a.denisov   (2005-02-21 19:47:00) [2]


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

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


Alexander Panov   (2005-02-21 19:12:00) [3]

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

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


Mouserx   (2005-02-21 18:49:00) [4]


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

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


Семен Сорокин   (2005-02-21 18:27:00) [5]

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


Mouserx   (2005-02-21 18:23:00) [6]

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


Mouserx   (2005-02-21 17:07:00) [7]


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

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

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

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


Семен Сорокин   (2005-02-21 16:47:00) [8]

TMemo.Lines.BeginUpdate/EndUpdate


Наверх

Титульная страница Поиск, карта сайта Написать письмо