Moin freejay,
ich kann das Problem nachvollziehen.
Schau doch mal in den
VCL-Sourcen, wie GetCaretPos in D7 implementiert ist.
Bei mir (D5), wird leider der Rückgabewert von EM_GETSEL als Initialwert genommen, was zu diesem Fehler führt.
Vermutlich hat sich dies in D7 nicht geändert.
So geht's:
Delphi-Quellcode:
SendMessage(Memo1.Handle, EM_GETSEL, wParam(@lCol), 0);
lLine := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, lCol, 0);
lCol := lCol - SendMessage(Memo1.Handle, EM_LINEINDEX, -1, 0);
lCol entspricht dem y-, lLine dem x-Wert von CaretPos.