Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизСкроллинг при добавлении текста в 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.033 c