2012-12-29 16 views
6

Windows 7では、スクロールが自分で行われるため、メモコントロール(TMemo)がテキストがインストールされた後に自動的にスクロールします(Memo.Lines.Add(Path);)。メモコントロールの自動スクロールを停止する方法は?

自動スクロールを停止するにはどうすればよいですか?

+0

メモスクロール自動的に? – jachguate

+0

データが挿入されます。コード:lstFiles.Lines.Add(Path);. lstFilesはTMemoです。 – HamiD

答えて

6

通常、メモコントロールにテキストを追加すると、メモが挿入されたテキストの一番下までスクロールされます。それを防ぐために、テキストを追加する前にLines.BeginUpdateを呼び出し、その後EndUpdate呼び出す:

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    Memo1.Lines.BeginUpdate; 
    try 
    Memo1.Lines.Add('...'); 
    Memo1.Lines.Add('...'); 
    ... 
    finally 
    Memo1.Lines.EndUpdate; 
    end; 
end; 
+0

これはOKですが、ちらつきの望ましくない副作用があります:-(DoubleBufferedプロパティを設定することは効果がありません – truthseeker

+0

これがなぜ機能するのか説明できますか? 'System.Classes.TStrings.BeginUpdate'のドキュメントでは、 TStringsはこの情報を使用して、更新が完了したときにコントロールに再描画を指示するなどの特定のアクションを実行します。 " – DBedrenko

+1

@New 'TMemoStrings.SetUpdateState'はそのまま実装されるためです。 – NGLN

関連する問題