HI
Wer weiß da mal was?
Versuche in einer RichEditBox die momentane Cursorposition zu ermitteln.
Bekomme mit EM_EXGETSEL die Characterposition, mit
EM_EXLINEFROMCHARACTER die Zeilennummer, und mit EM_LINEINDEX,
die Position der akt. Zeile, die ich dann von der Characterposition subtrahieren könnte, um so die Spaltenposition des Cursors zuermitteln.
Leider zählt der Vogel die TABS als eine Position!
Wer kennt einen Weg ?
RichEditControl -Cursor Position
Moderatoren: crack, Krüsty, Marwin
-
Rainer
- Alter Hase
- Beiträge: 81
- Registriert: Freitag 21. Juli 2006, 14:39
- Wohnort: Senftenberg
- Kontaktdaten:
CharPosition
Hallo,
ich benutze in einem Editor zum grafischen Überschreiben EM_POSFROMCHAR, wobei bei RichEdit-Version 2
invoke SendMessage, hEdit, EM_POSFROMCHAR, CharPos, 0
und bei Version 3
invoke SendMessage, hEdit, EM_POSFROMCHAR, addr rc, Charpos
gültig ist.
Gruß Rainer
ich benutze in einem Editor zum grafischen Überschreiben EM_POSFROMCHAR, wobei bei RichEdit-Version 2
invoke SendMessage, hEdit, EM_POSFROMCHAR, CharPos, 0
und bei Version 3
invoke SendMessage, hEdit, EM_POSFROMCHAR, addr rc, Charpos
gültig ist.
Gruß Rainer
Hallo Rainer,
Danke für die Antwort.
EM_POSFROMCHAR gibt mir die point-coordinaten in der client-area zurück, ich brauche aber einfach nur die position, an der die momentane eingabe getätigt wird, um sie in der Statusbar anzuzeigen.
z.B. line 7:col 8.
kann die characterposition der aktuellen Eingabe mit EM_EXGETSEL ermitteln, mit EM_EXLINEFROMCHAR bekomme ich die Zeilennummer.
EM_LINEINDEX gibt mir dann die position des cursors in der zeile.
also wäre dann: EM_LINEINDEX - EM_EXGETSEL = meine position.
so was ähnliches hab ich auch in einigen Delpi Beispielen gefunden.
ABER: enthält die Zeile TABS, dann ist das ergebnis falsch, weil jedes TAB nur als ein CHAR gezählt wird.
Also muß ich jetzt noch die zeile auslesen,tabs zählen, ....
Das muß doch einfacher gehen !?
Danke für die Antwort.
EM_POSFROMCHAR gibt mir die point-coordinaten in der client-area zurück, ich brauche aber einfach nur die position, an der die momentane eingabe getätigt wird, um sie in der Statusbar anzuzeigen.
z.B. line 7:col 8.
kann die characterposition der aktuellen Eingabe mit EM_EXGETSEL ermitteln, mit EM_EXLINEFROMCHAR bekomme ich die Zeilennummer.
EM_LINEINDEX gibt mir dann die position des cursors in der zeile.
also wäre dann: EM_LINEINDEX - EM_EXGETSEL = meine position.
so was ähnliches hab ich auch in einigen Delpi Beispielen gefunden.
ABER: enthält die Zeile TABS, dann ist das ergebnis falsch, weil jedes TAB nur als ein CHAR gezählt wird.
Also muß ich jetzt noch die zeile auslesen,tabs zählen, ....
Das muß doch einfacher gehen !?
-
Rainer
- Alter Hase
- Beiträge: 81
- Registriert: Freitag 21. Juli 2006, 14:39
- Wohnort: Senftenberg
- Kontaktdaten:
Pos in RichEdit
Hallo,
ich ermittle die Zeichenposition genauso. Zu Programmbeginn stelle ich die Zeichenbreite fest. Das funktioniert natürlich nur bei Fonts mit fester Breite. Wenn ich also die grafische Position habe, muss ich nur noch dividieren und habe die Spaltenposition.
Gruß Rainer
ich ermittle die Zeichenposition genauso. Zu Programmbeginn stelle ich die Zeichenbreite fest. Das funktioniert natürlich nur bei Fonts mit fester Breite. Wenn ich also die grafische Position habe, muss ich nur noch dividieren und habe die Spaltenposition.
Gruß Rainer