dann schrottet es das TMemo und es gibt einen Riesencursor, womit man nicht arbeiten kann (siehe Screenshot in der Anlage).
Einen Text mit Zeilenumbruch per Lines.Add einfügen ist auch nicht die feine Art.
Man könnte das also auch vorher als Bug ansehen.
Wenn du die Zeilen als solche einfügst oder per Text zuweist, gibt es das Problem auch nicht.
Der große Cursor kommt daher, dass das ganze auch wirklich als eine Zeile angesehen wird und lediglich umgebrochen angezeigt wird.
Nicht nur das:
Wenn du den Fokus einmal auf Memo1 setzt, siehst du, dass die zwei Zeichen des Zeilenumbruches der Cursorposition hinzugefügt werden, so dass der Cursor dann nicht nach dem eingefügten Text steht, sondern zwei Zeichen weiter rechts...
Die Ursache dafür ist, dass man die Behandlung des Zeilenumbruches vorher offenbar wirklich als Bug angesehen hat. Denn nun wird der Text zeilenweise eingefügt. Da man aber bis zur Zeilenanzahl der Einfüge-Stringlist einfügt, fällt der Zeilenumbruch am Ende unter den Tisch. Danach wird aber der Cursor um die Länge des einzufügenden Texts nach vorne gesetzt.
Delphi-Quellcode:
Lines[APosition.Line] := Lines[APosition.Line].Insert(StartPos, AFragment[0]);
for I := 1 to AFragment.Count - 1 do
Lines.Insert(APosition.Line + I, AFragment[I])