在线等待:如何得到Memo或RichEdit控件中光标位置??
如果光标在这类文本控件中,
如何能得到光标的位置。

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    LineNum:longint;
    CharsBeforeLine:longint;
    begin
      LineNum:=SendMessage(Memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart,0);
      CharsBeforeLine:=SendMessage(Memo1.Handle,EM_LINEINDEX,LineNum,0);
      showmessage(inttostr(linenum));
      showmessage(inttostr(memo1.SelStart));
      showmessage(inttostr(CharsBeforeLine));
      Label1.Caption:='Line'+IntToStr(LineNum+1) ;
      Label2.caption:='Position'+IntToStr((Memo1.SelStart-CharsBeforeLine)+1);
    end;
      

  2.   

    var 
    i:integer;
    begin
       i:=richedit1.selstart;/变量i保存的就是richedit中的光标位置..
    end;
      如果有错,不要笑我...欢迎指教....
      

  3.   

    不好意思,我又试过了,
    我用
    void __fastcall Form1::Memo1Change()
    {
     Label1->Caption=IntToStr(Memo1->SelStart);
    }
    还真实现了。
    确实是SelStart是光标当前位置,虽然没有选中任何内
      

  4.   

    richedit1.CaretPos.x  :光标在框中的行坐标位置;
    richedit1.CaretPos.y  :光标在框中的列坐标位置;