2010-12-01 9 views
9

delphiには、ニュースサイトのようにdbから読み込まれた自動スクロールテキストを許可するコンポーネントが含まれていますか?delphiの自動スクロールメモ

デルタ7アプリケーション用のTtで、垂直スクロールが必要です。

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

私は、ログ表示のために使用します。

答えて

5

これらのスクロールソリューションは、RichEditメモの中で私にとってうまくいきませんでした。 Delphi 2010 + w7を使用しています。 しかし、この1つは完璧に動作します:

すべてのLines.Add('...')した後、これは、次のとおりです。必要なときには、またのonchangeイベントの内部例えば、Memo.GoToTextEnd;を使用することができます http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_10120212.html

5

おそらく、あなたがDBMemoをスクロールするためにこれを適応させることができ、いくつかのお金を節約します。

29

このような簡単な作業のために、市販のコンポーネントを購入する必要はありません。あなたがやらなければならないことは、それが最後の行にスクロールさせるために、そのメモコントロールにEM_LINESCROLLメッセージを送信することです:

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

あなたのメモは、ユーザーにのみ、読み込まれ、アプリケーションによって自動的に更新されている場合、 OnChangeイベントハンドラで上記のプロシージャを呼び出すことができます。これにより、メモ内のテキストが変更されるたびに自動的に最後の行までスクロールされます。

+0

ええ、それは私のものよりも短く、Memo_Scroll Golf anyone? :) – Despatcher

+0

このスクロールは高速です。どのようにそれを遅くするのですか? – none

+0

@none、それを遅くすることはどういう意味ですか?あなたはスクロールの視覚効果を作り出すつもりですか? – vcldeveloper

0

:で発見

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

を。適切な自動スクロール効果ではありませんが、同様の状況で役立ちます。

関連する問題