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