Автопрокрутка в delphi
В Delphi содержится компонент, который позволяет загружать автоматический текст прокрутки с db, например, на новостных сайтах?
Tt для приложения delphi 7 и требуется вертикальная прокрутка.
Ответы
Ответ 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);