SendMessage(memo.handle,EM_LINEFROMCHAR,-1,0);

解决方案 »

  1.   

    当然SendMessage得到的是从0开始记数的行,如果要从1开始记数,那加1吧。
      

  2.   

    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);
    Label1.Caption:='Line: '+IntToStr(LineNum + 1);
    Label2.Caption:='Position: '+IntToStr((Memo1.SelStart -
                     CharsBeforeLine)+1);
    end;