做个程序,需要实现这样的功能:1.使用RichEdit控件,里面有图文混排,文字的大小也可能不一样。
现在需要不要控件自带的滚动条,屏幕只是显示能显示的部分,旁边有个按钮,当点击按钮,RichEdit里再显示下一页的内容。2.RichEdit控件里的内容需要保存到数据库中,也要从数据库中读取。其实说的简单一点,就是如何在RichEdit控件中显示分页功能?????

解决方案 »

  1.   

    // 指定输入游标的位置
    procedure SetCaret(RTF: TRichEdit; var Row, Col: word);
    var
    i, iStopLine, iSelStart: integer;
    begin
    if (RTF = nil) then Exit;
    if Row = 0 then Row := 1;
    if Col = 0 then Col := 1;// 到第 Row 列, Col 行共几个字元
    iStopLine := Row - 1;
    iSelStart := 0;
    for i := 0 to RTF.Lines.Count - 1 do
    begin
    if i = iStopLine then
    begin
    if Length(RTF.Lines[i]) >= Col then
    Inc(iSelStart, Col)
    else
    Inc(iSelStart, Length(RTF.Lines[i]) + 2);
    Break;
    end;
    Inc(iSelStart, Length(RTF.Lines[i]) + 2);
    end;
    if iSelStart > 0 then Dec(iSelStart);// 以设定标记的方式指定游标位置
    SendMessage(RTF.Handle, EM_SETSEL, iSelStart, iSelStart);// 再次侦测游标位置
    Row := SendMessage(RTF.Handle, EM_LINEFROMCHAR, RTF.SelStart, 0);
    Col := RTF.SelStart - SendMessage(RTF.Handle, EM_LINEINDEX, Row, 0);// 卷到游标所在位置
    SendMessage(RTF.Handle, EM_SCROLLCARET, 0, 0);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
    iRow, iCol: word;
    begin
    iRow := 17;
    iCol := 3;
    SetCaret(RichEdit1, iRow, iCol);
    RichEdit1.SetFocus;
    end
    ///
    这个,你计算一下每面有多少行,之后,自己找定行就可以了;
      

  2.   

    你们两个三角角这么多,不可以抢我的分的;
    而且,我的那段代码是正确的;
    嘻嘻;
    CSDN上人不结贴了
    5555555555
    要不我今天就升了两级了
      

  3.   

    me too,问过,考虑过,还没有解决。