автопрокрутка заметка в дельфи - PullRequest
10 голосов
/ 01 декабря 2010

Содержит ли Delphi компонент, позволяющий автоматически прокручивать текст, загруженный из БД, как на новостных сайтах?

Tt для приложения Delphi 7 и требует вертикальной прокрутки.

Ответы [ 5 ]

31 голосов
/ 01 декабря 2010

Для такой простой задачи вам не нужно покупать коммерческий компонент!Все, что вам нужно сделать, - это отправить сообщение EM_LINESCROLL в этот элемент управления memo, чтобы он перешел к последней строке:

procedure ScrollToLastLine(Memo: TMemo);
begin
  SendMessage(Memo.Handle, EM_LINESCROLL, 0,Memo.Lines.Count);
end;

Если ваша памятка доступна только для чтения и обновляется приложением автоматическиВы можете вызвать вышеуказанную процедуру в ее обработчике события OnChange, чтобы при каждом изменении текста внутри заметки он автоматически прокручивался до последней строки.

6 голосов
/ 18 ноября 2014

Ни одно из этих решений для прокрутки не помогло мне в заметке RichEdit.Использование Delphi 2010 + w7.Но этот работает отлично:

После каждого Lines.Add('...') это следует:

SendMessage(RichEditMemo.Handle, WM_VSCROLL, SB_LINEDOWN, 0);

Найдено в: http://www.experts -exchange.com / Программирование / Языки / Pascal / Delphi/Q_10120212.html

5 голосов
/ 01 декабря 2010

Возможно, чтобы сэкономить немного денег, вы можете адаптировать это для прокрутки DBMemo:

EchoMemo.Lines.Add('A Line of text or more');
EchoMemo.SelStart := EchoMemo.GetTextLen;
EchoMemo.SelLength := 0;
EchoMemo.ScrollBy(0, EchoMemo.Lines.Count);
EchoMemo.Refresh;

Я использую для отображения журнала.

1 голос
/ 28 января 2018

Вы также можете использовать Memo.GoToTextEnd; при необходимости, например, внутри события onchange. Неподходящий эффект автопрокрутки, но может быть полезен в подобных ситуациях.

0 голосов
/ 17 декабря 2018

Если вы работаете с компонентами DevExpress, вам следует использовать InnerControl->Handle. Так должно выглядеть так:

SendMessage(cxMemo->InnerControl->Handle, EM_LINESCROLL, 0,cxMemo->Lines->Count);
...