2012-12-29 60 views
6

在Windows 7中,備忘錄控件(TMemo)將在文字完成後自動滾動(Memo.Lines.Add(Path);),這是我不需要的,因爲滾動是由我自己完成的。如何停止Memo控件的自動滾動?

如何停止自動滾動?

+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

這個函數沒問題,但有不希望的副作用閃爍:-(。設置DoubleBuffered屬性沒有任何好處。 – truthseeker

+0

你能解釋爲什麼這會起作用嗎?在System.Classes.TStrings.BeginUpdate的文檔中,它說:「某些後代TStrings使用這些信息來執行某些操作,例如在更新完成時告訴控件重新繪製。「 – DBedrenko

+1

@新因爲」TMemoStrings.SetUpdateState「按照它的方式實現。 – NGLN