老妖请进:如何将TRichEdit中带格式的内容(如表格)画到Printer()->Canvas上?

ccgk2005 2010-01-20 03:54:00
如何将TRichEdit中带格式的内容(如表格)画到Printer()->Canvas上
1、通过TRichEdit自身的Print()可以将TRichEdit中带格式的内容(如表格)打印出来;
2、现在需要同时打印一个TPanel上几个控件里的内容,目前的做法是遍历TPanel上的所有控件,将各个控件上的内容输出到Printer()->Canvas上,然后打印出来。这样子就把TRichEdit中格式丢了,只能打印出上面的文字信息。
3、目前打印TRichEdit里内容的方法如下:Printer()->Canvas->TextOut(tempx, tempy+i*(Printer()->Canvas->TextHeight(" 高")),RichEdit->Lines->Strings[i]);

我怎样才能打印出RichEdit中带格式的内容呢?请各位赐教!
...全文
55 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2010-01-20
  • 打赏
  • 举报
回复
你的问题我刚才看到了,只是考虑可能有些复杂,所以暂时没有回答.刚刚翻出来个以前写的代码,是将RichEdit的部分截图,不知道对你有没有帮助:

long RtfToCanvas(TCanvas *pCanvas, int nFromChar, int nToChar,
TRichEdit *pRichEdit, int nWidth, int nHeight)
{
TFormatRange Range;
memset(&Range, sizeof(TFormatRange), 0);
Range.hdc = pCanvas->Handle;
Range.hdcTarget = pCanvas->Handle;
Range.rc.left = 0;
Range.rc.top = 0;
Range.rc.right = nWidth * 1440 / Screen->PixelsPerInch;
Range.rc.bottom = nHeight * 1440 / Screen->PixelsPerInch;
Range.chrg.cpMax = nToChar;
Range.chrg.cpMin = nFromChar;
long lResult = SendMessage(pRichEdit->Handle, EM_FORMATRANGE, 1, (LPARAM)&Range);
SendMessage(pRichEdit->Handle, EM_FORMATRANGE, 0,0);
return lResult;
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧