如何取得RICHEDIT中当前行的坐标或高度!因为我有一个控件想随RICHEDIT中的行联动!先谢谢了!~~~~~~

解决方案 »

  1.   


    //显示当前光标的位置(richedit中)
    var
      CharPos: TPoint;
      i:integer;
    begin
      i:=pagecontrol1.ActivePageIndex;
      CharPos.Y := SendMessage(richedits[i].Handle, EM_EXLINEFROMCHAR, 0,
        richedits[i].SelStart);
      CharPos.X := (richedits[i].SelStart -
        SendMessage(richedits[i].Handle, EM_LINEINDEX, CharPos.Y, 0));
      Inc(CharPos.Y);
      Inc(CharPos.X);
      stbStatusBar.Panels[1].Text := Format(sColRowInfo, [CharPos.Y, CharPos.X]);
    end;
      

  2.   

    {先在Form上放置三个Label组件,并在程序代码的前面声明下面这三个变量为整型数,即:
      VarLpos,Cpos,Linelength:integer;   其中Lpos是行的值(按照Memo的规定,第一行为0),Cpos是字符的位置,LineLength是当前行的字符总个数。     然后,再将下面的七行程序代码分别加入Memo1的OnMouseDown和OnKeyDown的事件代码处即可。      Lops:=SendMessage(memol.Handle,EM_LINEFROMCHAR,Memol.SelStart,0);
       Cpos:=SendMessage(memo1.Handle,EM_LINEINDEX,Lpos,0);
       LineLength:=SendMessage(memol.handle,EM_LINELENGTH,Cpos,0);
       Cpos:=Memol.SelStart-CPos;
       Labell.caption:=inttostr(lpos);
       Label2.caption:=inttostr(cpos);
       Label3.caption:=inttostr(linelength);  这样,执行程序后,随着在Memo组件中的编辑操作,Label1、Label2和Label3就将显示出相对应的当前行值、字符位置与当前行的字符总个数了。
    }
      

  3.   

    楼上那位仁兄可能是我没有表达清楚,我的意思是LABLE随着RICHEDIT的行的改变然后指向当前的行!我的LABLE只是起一起标识作用,并不用显示什么!