如题。

解决方案 »

  1.   

    TMainForm.UpdateCursorPos();
    var
      CharPos: TPoint;
    begin
      CharPos.Y := SendMessage(ActRichEdit.Handle, EM_EXLINEFROMCHAR, 0,
        ActRichEdit.SelStart);
      CharPos.X := (ActRichEdit.SelStart -
        SendMessage(ActRichEdit.Handle, EM_LINEINDEX, CharPos.Y, 0));
      Inc(CharPos.Y);
      Inc(CharPos.X);
      status.Caption := Format(' 行:%3d   列: %3d 总行数:%3d', [CharPos.Y, CharPos.X,ActRichEdit.Lines.Count]);end;
      

  2.   

    在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;
      

  3.   

    i := Edit1.SelStart;
     showmessage(inttostr(i));