Подтвердить что ты не робот

Автопрокрутка в delphi

В Delphi содержится компонент, который позволяет загружать автоматический текст прокрутки с db, например, на новостных сайтах?

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

4b9b3361

Ответ 1

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

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

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

Найдено в: http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_10120212.html

Ответ 2

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

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

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

Ответ 3

Возможно, чтобы сэкономить вам немного денег, вы можете адаптировать это для прокрутки 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;

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

Ответ 4

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

Ответ 5

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

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