![]() |
TMemo: Zeilenindex der Cursorposition ermitteln
Damit meine ich aber nicht das Y von
Delphi-Quellcode:
Das sagt mir ja lediglich aus, welches Item der Stringliste ich gerade bearbeite.
charetPos(X,Y)
Was ich brauche, ist die (vertikale) Position des Cursors im sichtbaren Bereich des Memofeldes, ganz unabhängig welche Zeile gerade bearbeitet wird. Gibt's da Möglichkeiten? |
Re: TMemo: Zeilenindex der Cursorposition ermitteln
Aus der Hilfe:
Zitat:
Zitat:
Klaus |
Re: TMemo: Zeilenindex der Cursorposition ermitteln
Hallo, danke für die Antwort. Hilft mir aber leider nicht weiter. Zugegeben, ich habe das Problem unglücklich formuliert. Nochmal ein Beispiel zum Unterstreichen was ich wirklich ermitteln möchte:
Angenommen ich habe ein MemoFeld mit einer vertikalen Länge von 10 Zeilen. Vom enthaltenen Text (100 Zeilen lang) sind momentan die Zeilen 21-30 sichtbar. Die CharetPos-Y lautet 25, das bedeutet von den sichtbaren Zeilen befindet sich der Cursor in der Fünften. Und genau diese "5" ist es, die ich ermitteln muss! Einen funktionalen Zusammenhang zu CharetPos-Y kann ich leider nicht zu 100% herstellen: Wenn nämlich der User 1 Zeile zurück scrollt, dann ist mein gesuchter Wert nur noch 4, CharetPos-Y ist aber immer noch 25! Oder hast Du das schon so verstanden, und ich habe nur Deine Hinweise falsch interpretiert? Wenn dem so ist, kannst Du mir noch einen Tipp geben? Grüße... |
Re: TMemo: Zeilenindex der Cursorposition ermitteln
Nun, ein etwas merkwürdiges Konstrukt zur Ermittlung
der Zeilenposition.
Delphi-Quellcode:
Noch eine Anmerkung zum Code, er funktioniert nur richtig wenn alle Zeilen einen unterschiedlichen Inhalt haben.
Edit1.Text:=IntToStr(Memo1.Lines.IndexOf(Memo1.Lines.Strings[Memo1.CaretPos.y]));
Noch eine Anmerkung, es ist Freitag und der obige Code macht nicht das was Du willst. Habe nun auch noch keine Lösung zu Deinem Problem. Grüße Klaus |
Re: TMemo: Zeilenindex der Cursorposition ermitteln
So danke noch einmal; hab den Term 1:1 übernommen.
Ich würde jetzt eigentlich erwarten, dass folgende beiden Terms dasselbe zurückgeben sollten...
Delphi-Quellcode:
ist bei mir irgendwie gleichbedeutend mit
Memo1.Lines.IndexOf(Memo1.Lines.Strings[Memo1.CaretPos.y]);
Delphi-Quellcode:
weil ja "Memo1.Lines" nix anderes als ein "TStrings"-Objekt ist und ja auch nicht wissen kann, welche der z.B. insgesamt 100 Zeilen gerade im Memofeld sichtbar sind und welche weggescrollt.
Memo1.CaretPos.y
Das Programm bestätigt meine Befürchtung. Sprich auf mein voriges Beispiel bezogen, gibt mir das eben auch die 25 zurück, anstelle die 5. Es müsste ein Objekt der Klasse TStrings geben, welche immer nur die im Memofeld gerade sichtbaren Zeilen beinhaltet, das wär's. Aber dafür scheint es wohl zu wenig sinnvolle Anwendungsmöglichkeiten zu geben... (meine ist aber sinnvoll). Ich fürchte für mein Problem gibt es keine Lösung, höchstens mit irgendeiner Win32-API, die ich aber nicht kenne. |
Re: TMemo: Zeilenindex der Cursorposition ermitteln
Hallo,
vielleicht hilft dir diese Funktion. Sie ermittelt die (0-basierte) Nummer der ersten sichtbaren Zeile in einem Memo:
Delphi-Quellcode:
Gruß Hawkeye
function GetFirstVisibleLine (aMemo: TCustomMemo): Integer;
begin Result := aMemo.Perform(EM_GETFIRSTVISIBLELINE, 0, 0); end; |
Re: TMemo: Zeilenindex der Cursorposition ermitteln
Ohne es ausprobiert zu haben:
Ich denke, das ist es! Dreimal danke! :hello: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz