var
     charpos:Tpoint;
    begin
      CharPos.Y := SendMessage(richedit1.Handle, EM_EXLINEFROMCHAR, 0,richedit1.SelStart);
      CharPos.X := (richedit1.SelStart -SendMessage(richedit1.Handle, EM_LINEINDEX, CharPos.Y, 0));
      showmessage(inttostr(CharPos.X)+#13+#10+inttostr(CharPos.Y));
      StatusBar1.Panels[0].Text := Format('Line: %3d   Col: %3d', [CharPos.Y, CharPos.X]);
    end;

解决方案 »

  1.   

    CharPos.Y := SendMessage(richedit1.Handle, EM_EXLINEFROMCHAR, 0,
        Editor.SelStart);
      CharPos.X := (richedit1.SelStart -
        SendMessage(richedit1.Handle, EM_LINEINDEX, CharPos.Y, 0));
      Inc(CharPos.Y);
      Inc(CharPos.X);
      StatusBar1.Panels[0].Text := Format('Line: %3d   Col: %3d', [CharPos.Y, CharPos.X]);
    记得要uses richedit
    这个准确!
      

  2.   

    最好是扩展RichEdit组件,
    private
        FRow:Longint;
        FColumn:Longint;
    ...................    function GetRow:Longint;
        function GetColumn:Longint;
    public
      property Row:Longint read GetRow ;
      property Column:LongInt read GetColumn ;
    ...........................
    function TRichEdit.GetColumn: Longint;
    begin
      Result:=SelStart-Perform(EM_LINEINDEX,-1,0);
    end;
    function TRichEdit.GetRow: Longint;
    begin
      Result:=Perform(EM_LINEFROMCHAR,-1,0);
    end;
      

  3.   

    var 
     Point: TPoint; 
    begin 
     point.y := SendMessage(SourceMemo.Handle, EM_LINEFROMCHAR,SourceMemo.SelStart,0); 
     point.x := SourceMemo.SelStart- SendMessage(SourceMemo.Handle,EM_LINEINDEX,point.y,0); 
     Result := Point;
    end; 
    我这个是MEMO里面的,我没有试在RichEdit中,你可以试一下!!!!