在richedit控件中使用在richedit 控件的onselecttionchange事件中编写如下代码var row,col:integer;
begin
   row:=sendmessage(handle,em_linefromchar,richedit1.SelStart,0);
   showmessage(inttostr(row));
   col:=richedit1.SelStart -sendmessage(handle,em_lineindex,3,0);
   showmessage(format('%d 行 %d列',[row,col]));end;
显示结果一直为0行,列数为各行的类加,这是为什么?请各位大哥赐教!

解决方案 »

  1.   

    row要加1:
    var
      row, col: Integer;
    begin
      row := SendMessage(RichEdit1.Handle, EM_LINEFROMCHAR,
        RichEdit1.SelStart, 0);
      col := RichEdit1.SelStart -
        SendMessage(RichEdit1.Handle, EM_LINEINDEX, row, 0);
      Inc(row);  // 行号
      Inc(col);  // 列号
      ShowMessage(Format('%d 行 %d列',[row, col]));
    end;
      

  2.   

    如果row要从1算起的话就要加1。
    你上面的row:=sendmessage(handle,em_linefromchar,richedit1.SelStart,0);
    错了,handle是窗体的handle,所以都返回0,要改为RichEdit1.Handle。