2012-12-29 10 views
6

W systemie Windows 7 kontrolka notatki (TMemo) będzie przewijana automatycznie po dodaniu tekstu (Memo.Lines.Add(Path);), którego nie chcę, ponieważ przewijanie jest wykonywane samodzielnie.Jak zatrzymać automatyczne przewijanie kontrolki Memo?

Jak zatrzymać automatyczne przewijanie?

+0

Kiedy przewija memo automatycznie? – jachguate

+0

po wstawieniu danych. code: lstFiles.Lines.Add (Path) ;. lstFiles to TMemo. – HamiD

Odpowiedz

6

Zazwyczaj dodanie tekstu do kontrolki memo powoduje przewinięcie notatki na dole wstawionego tekstu. Aby temu zapobiec, należy zadzwonić Lines.BeginUpdate przed dodawanie tekstu, a potem zadzwonić EndUpdate:

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

To działa OK, ale ma niepożądany efekt uboczny migotania :-(Ustawienie właściwości DoubleBuffered nie przynosi żadnych korzyści – truthseeker

+0

Czy możesz wyjaśnić, dlaczego to działa? W dokumentacji dla "System.Classes.TStrings.BeginUpdate" jest napisane: "Niektórzy potomkowie TStrings wykorzystuje te informacje do wykonywania określonych czynności, takich jak wymuszenie odświeżenia kontroli po zakończeniu aktualizacji. " – DBedrenko

+1

@Nowość Ponieważ' TMemoStrings.SetUpdateState' jest zaimplementowane tak, jak jest. – NGLN

Powiązane problemy