Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1109060871
Maks Realov
2005-02-22 11:27
2005.03.06
Как лучше реализовать запись множества дин. данный в файл?


1-1108618021
vlgrig1961
2005-02-17 08:27
2005.03.06
Как в TreeView програмно стать на TreeNode...


14-1108376394
Lamer123
2005-02-14 13:19
2005.03.06
Работа со строками в VBA


14-1108455916
Hawk2
2005-02-15 11:25
2005.03.06
ТВ-Тюнеры


3-1107867700
Ru
2005-02-08 16:01
2005.03.06
АРМ Расчет заработной платы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский