Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TRichedit - Cursor und Bildausschnitt positionieren (https://www.delphipraxis.net/132724-trichedit-cursor-und-bildausschnitt-positionieren.html)

mani64 18. Apr 2009 10:38


TRichedit - Cursor und Bildausschnitt positionieren
 
Hallo,

mittlerweile gelingt es mir, neue Zeilen aus einer Datei am Ende meines Richedit-Textes anzuhängen.
Nun möchte ich, dass zwar das Anhängen am Ende geschieht, aber danach wieder die alte Cursor-Position und der alte Bildausschnitt angezeigt werden.
Ich verwende folgenden code:


Code:
richedit.lines.BeginUpdate;
curcuretpos:=richedit.selstart; // aktuelle Position speichern

richedit.selstart:=length(richedit.text); // Ende des Textes

// hier folgt nun das Einfügen der Zeilen - danach:

richedit.lines.EndUpdate;
richedit.selstart:=curcuretpos;
richedit.Repaint;
Zwar steht der Cursor dort, wo er soll, aber der Bildschirmausschnitt springt nicht an diese Stelle, sondern bleibt am Ende des Textes stehen. Wie kann ich erreichen, dass die alte Cursorstelle angezeigt wird??

taaktaak 18. Apr 2009 12:42

Re: TRichedit - Cursor und Bildausschnitt positionieren
 
Moin, Moin.
Bin mir nicht sicher, das ich deine Frage so recht verstanden habe.
Du sicherst+restaurierst die Caret-Position.
Aber zusätzlich soll die oberste Zeile auch restauriert werden?
Wenn ja, dann sollte dieses helfen:

Delphi-Quellcode:
function reGetVerScrollPos(re:TRichEdit):Integer;
begin
  Result:=GetScrollPos(re.Handle,SB_Vert);
end;

procedure reSetVerScrollPos(re:TRichEdit;Position:Integer);
begin
  SetScrollPos(re.Handle,SB_Vert,Position,true);
  re.Perform(WM_VScroll,Position shl 16+SB_ThumbTrack,0)
end;

mani64 18. Apr 2009 13:20

Re: TRichedit - Cursor und Bildausschnitt positionieren
 
Danke, werde ich ausprobieren...

welche Unit muss ich da zusätzlich einbinden? Bei der Syntaxprüfung wird WM_VScroll nicht gefunden.


Edit:
Okey, hab die fehlende Unit gefunden: Messages.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz