![]() |
richedit - caretpos
hi leute,
hab wiedermal ein kleines problem ich hab eine richedit-komponente, und wenn ich auf diese mit der maus klicke, will ich wissen, auf welches wort ich geklickt habe. hab als lösungsansatz richedit.carepos.x bzw. y herangezogen, um die cursor-position zu bestimmen. leider ist diese vorgehensweise nur bedingt zu gebrauchen, da carepos auch dann ergebnisse liefert, wenn ich mit der maus auf "Nicht-Text-Bereiche" klicke. wäre für ratschläge sehr dankbar!!! Gruß Fritziiiii |
Re: richedit - caretpos
Google kommt selbst mit kompliziertesten Suchanfragen zu recht:
![]() |
Re: richedit - caretpos
Luckie, hast ja recht, aber ich will das jetzt nicht umsonst aus meinem Code herausoperiert haben:
Delphi-Quellcode:
Grüße vom marabu
procedure TMainForm.MemoClick(Sender: TObject);
var p: TPoint; begin GetCursorPos(p); p := Memo.ScreenToClient(p); Memo.SelStart := LoWord(SendMessage(Memo.Handle, EM_CHARFROMPOS, 0, p.Y shl 16 + p.x)); end; |
Re: richedit - caretpos
Liste der Anhänge anzeigen (Anzahl: 1)
So ein Blödsinn - fritzi* will ja das Wort unter dem Cursor. Das geht recht einfach, da beim Ereignis OnMouseDown() das Caret schon versetzt ist:
Delphi-Quellcode:
marabu
function CurrentWord(ce: TCustomEdit): string;
const WordChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ' + 'abcdefghijklmnopqrstuvwxyzäöüß'; var i, iStart: integer; s: string; begin s := ce.Text; iStart := ce.SelStart; while (iStart > 0) and (Pos(s[iStart], WordChars) > 0) do Dec(iStart); i := ce.SelStart; while (Succ(i) < Length(s)) and (Pos(s[Succ(i)], WordChars) > 0) do Inc(i); Result := Copy(s, Succ(iStart), i - iStart); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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 by Thomas Breitkreuz