读书人

急怎么让RichEdit不显示半行文字请高

发布时间: 2012-03-03 15:33:03 作者: rapoo

急!如何让RichEdit不显示半行文字,请高手赐教!
在RichEdit中输入文字时,遇到一页显示不下时,控件可以自动切换到下一页(此时不显示半行文字),等输入完成,重新移动光标到第一页,会出现半行文字,如何能让RichEdit无论在什么时候都不显示半行文字,遇到半行文字直接跳到下一页,曾想过在这行插入一个回车,但不知道怎么准确判断该行是半行?其实我就是想做一个文本分割并将其转为BMP图片,就是要保证没有半行的出现。头疼好多天了,请高手赐教!

[解决办法]
RichEdit能分页吗,我只知道Memo
[解决办法]

Delphi(Pascal) code
uses RichEdit;procedure TForm1.Button1Click(Sender: TObject);var    r: TRect;    nCharPos: Integer;    // nFirstVisibleLine: Integer;    nLastVisibleLine: Integer;    nPrevLineCharPos: Integer;    dwPos: DWORD;    nLineHeight: Integer;begin    RichEdit1.Perform(EM_GETRECT, 0, LPARAM(@r));    r.Left := r.Left + 1;    r.Top := r.Bottom - 2;    // 最后一个可视行的第一个字符位置    nCharPos := RichEdit1.Perform(EM_CHARFROMPOS, 0, LPARAM(@r));    // 第一个可视行的行数    // nFirstVisibleLine := RichEdit1.Perform(EM_GETFIRSTVISIBLELINE, 0, 0);    // 最后一个可视行的行数    nLastVisibleLine := RichEdit1.Perform(EM_EXLINEFROMCHAR, 0, nCharPos);    // 下一个可视行的字符位置    nPrevLineCharPos := RichEdit1.Perform(EM_LINEINDEX, nLastVisibleLine + 1, 0);    // 下一行的坐标位置    dwPos := RichEdit1.Perform(EM_POSFROMCHAR, nPrevLineCharPos, 0); // WPARAM(@pt)    // 计算行高    nLineHeight := r.Bottom - Integer(dwPos shr 16);// pt.Y;    // 如果下一行的行高小于0,说明显示不完全,就在最后一个可视行后加一空行    if (nLineHeight < 0) then        RichEdit1.Lines.Insert(nLastVisibleLine, '');end;
[解决办法]
希望能帮到你一点

richedit1.height 除以 Canvas.TextHeight('字')

读书人网 >.NET

热点推荐