7

In Windows 7, a memo control (TMemo) will scroll automatically after text is insterted (Memo.Lines.Add(Path);), which I do not want, because scrolling is done by myself.

How can I stop the automatic scrolling?

2
  • When the memo scrolls automatically? Commented Dec 30, 2012 at 4:10
  • when data is inserted. code: lstFiles.Lines.Add(Path);. lstFiles is TMemo. Commented Dec 30, 2012 at 6:11

1 Answer 1

10

Normally, adding text to a memo control scrolls the memo to the bottom of the inserted text. To prevent that, call Lines.BeginUpdate before adding text, and call EndUpdate afterwards:

procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.BeginUpdate; try Memo1.Lines.Add('...'); Memo1.Lines.Add('...'); ... finally Memo1.Lines.EndUpdate; end; end; 
Sign up to request clarification or add additional context in comments.

3 Comments

This functions OK but have undesired side effect of flickering :-(. Setting DoubleBuffered property is of no benefit.
Can you explain why this works? In the documentation for System.Classes.TStrings.BeginUpdate it says "Some descendants of TStrings use this information to perform certain actions, such as telling a control to repaint, when updates are complete."
@New Because TMemoStrings.SetUpdateState is implemented the way it is.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.