在RichEdit的OnSelectionChange事件处理过程中加入适当的代码可以实时地获得当前光标位置,示例如下:
procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
var
X, Y: LongInt;
begin
Y := SendMessage(RichEdit1.Handle, EM_LINEFROMCHAR,
RichEdit1.SelStart, 0);
X := RichEdit1.SelStart -
SendMessage(RichEdit1.Handle, EM_LINEINDEX, Y, 0);
Inc(Y); // 光标的行号
Inc(X); // 光标的列号
end;