我的程序中用了 RichEdit ,在有滚动条内容大于一页的时候,我只想得到当前可见区域的内容(文本,不是图片),光标的位置是不定的,而且不能让用户操作,要程序自己截取。我找了半天没有找到相关资料,还请各位高手想想办法,多谢。

解决方案 »

  1.   

    你自己看看TFont::Charset,试试read。
    richedit1.SelAttributes.Charset;Richedit当前显示的字符集可能有很多种!
    象是的字符可能是西文字符集,也可能是中文字符集,这样的话,只好一个字符一个字符查询了,如果是选择的内容的字符集久很简单,用我前面的就可以了。
      

  2.   

    to: hellolongbin(一个人):
      发送什么消息,请说的明白点。
    to: Kshape([伟大的大伟!]):
      RichEdit不让用户参与操作的,也就是不能让用户选择文本,当然也不能让用户把光标移到可视区域的第一行。
      

  3.   

    //参考如下代码
    uses RichEdit;function RichEditVisibleText(mRichEdit: TRichEdit): string;
    var
      vRect: TRect;
      vStart: Integer;
      vEnd: Integer;
    begin
      Result := '';
      if not Assigned(mRichEdit) then Exit;
      mRichEdit.Perform(EM_GETRECT, 0, Integer(@vRect));
      vStart := mRichEdit.Perform(EM_CHARFROMPOS, 0, Integer(@vRect.TopLeft));
      vEnd := mRichEdit.Perform(EM_CHARFROMPOS, 0, Integer(@vRect.BottomRight));
      Result := Copy(mRichEdit.Text, vStart + 1, vEnd - vStart + 1);
    end; { RichEditVisibleText }procedure TForm1.Button1Click(Sender: TObject);
    begin
      Memo1.Text := RichEditVisibleText(RichEdit1);
    end;