Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - an das Dateiende springen
D. Annies - Mi 08.01.14 07:22
Titel: an das Dateiende springen
Hi Delpher,
es existiert ein Memo mit z.B. 150 Zeilen.
Ich adde jetzt Zeilen mit memo1.lines.add() ...
Beim Dateiaufruf ist der Cursor aber in Zeile 1. Wie kann ich
den Cursor schon gleich in die letzte Zeile positionieren?
Danke, Detlef
baumina - Mi 08.01.14 08:21
Delphi-Quelltext
1: 2: 3: 4: 5:
| memo1.SetFocus; memo1.CaretPos := Point(0,Memo1.Lines.Count-1); memo1.CaretPos := Point(length(Memo1.Lines[Memo1.Lines.Count-1]),Memo1.Lines.Count-1); SendMessage(memo1.Handle, EM_SCROLLCARET, 0, Memo1.Lines.Count-1); |
D. Annies - Mi 08.01.14 08:42
Danke für den Tipp, funzt aber leider nicht, es gibt keine Veränderung.
Detlef
baumina - Mi 08.01.14 08:45
Komisch, habe den Code bei mir getestet. Und funktioniert mit Delphi XE einwandfrei.
Mathematiker - Mi 08.01.14 08:52
Hallo,
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| procedure TForm1.Button1Click(Sender: TObject); var itemp: Integer; begin with RichEdit1 do begin SelStart := Length(Text); Perform(EM_SCROLLCARET, 0, 0);
SelStart := Perform(EM_LINEINDEX, 0, 0); Perform(EM_SCROLLCARET, 0, 0);
SelStart := Perform(EM_LINEINDEX, 5, 0) + 3; Perform(EM_SCROLLCARET, 0, 0);
with RichEdit1 do begin itemp := SendMessage(Handle, EM_LINEFROMCHAR, SelStart, 0); SelStart := Perform(EM_LINEINDEX, itemp + 1, 0); Perform(EM_SCROLLCARET, 0, 0); end;
SetFocus; end; end; |
Quelle: SwissDelphiCenter
Das RichEdit1 durch ein Memo ersetzen und es müsste funktionieren.
Beste Grüße
Mathematiker
D. Annies - Mi 08.01.14 09:47
Der Compiler meckert über die Variable? / Entität? "itemp".
Gruß, Detlef
vagtler - Mi 08.01.14 10:01
Warum sollte er?
D. Annies - Mi 08.01.14 10:19
Ich habe nicht beachtet, dass das Memo auf form2 liegt, also alles mit form2.memo1 ...
(Wie kann man nur so xxxxxxxxxxx)
LG, Detlef
baumina - Mi 08.01.14 10:24
Und spätestens jetzt sollte man ernsthaft darüber nachdenken den Formularen, den Memos und allen anderen Komponenten vernünftige Namen zu geben.
D. Annies - Mi 08.01.14 11:45
Hast ja recht :)
LG, Detlef
P.S. Hast du noch einen Tipp, wie man form2 und form2.komponente_xxx möglichst "geräuschlos"
umbenennen kann?
vagtler - Mi 08.01.14 11:57
GExperts oder CnPack
Zum architektonischen Aufbau solcher Konstrukte sag ich jetzt mal lieber nichts...
baumina - Mi 08.01.14 11:58
Hauptmenü Suchen/Ersetzen in .pas und .dfm
Delete - Mi 08.01.14 16:06
D. Annies hat folgendes geschrieben : |
Wie kann ich den Cursor schon gleich in die letzte Zeile positionieren? |
Bei mir funktioniert folgende Methode tadellos:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TFormMain.Button_AnsEndeClick(Sender: TObject); begin Memo_Test.SelStart := Length(Memo_Test.Text); Memo_Test.SetFocus; end; |
Der Cursor wandert auf diese Weise zuverlässig ans Ende deines Memo-Textes. Wenn du nichts davon siehst, liegt das daran, daß das Memo nicht von alleine dort hinscrollt, wo dein Cursor steht. Spätenstens bei der nächsten Eingabe tut es das aber.
jaenicke - Di 14.01.14 12:17
D. Annies hat folgendes geschrieben : |
P.S. Hast du noch einen Tipp, wie man form2 und form2.komponente_xxx möglichst "geräuschlos"
umbenennen kann? |
Ab Turbo Delphi sollte das mit Refactoring problemlos gehen.
D. Annies - So 19.01.14 04:38
Jo, Danke.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!