如何在Delphi 2007中打印包含RichEdit的表单?

如何在Delphi 2007中打印包含RichEdit的表单?,delphi,delphi-2007,Delphi,Delphi 2007,我目前正在做一个非常简单的项目:当我按下一个按钮时,我当前所在的表单就像打印屏幕一样打印出来 我使用的方法是Self.Print;按上面说的按钮,一切正常。我的按钮、标签和文本框都会打印出来。问题是,我试图打印的表单中有一个RichEdit,当页面从打印机出来时,RichEdit是空白的 我知道有更好的方法来打印表单中的信息,但这是按钮必须工作的当前方式 我发现一些论坛的主题是从2003年开始的,它们说要么不可能,要么我不得不使用RichEdit.Print方法,但这意味着打印机要打印两页而不是

我目前正在做一个非常简单的项目:当我按下一个按钮时,我当前所在的表单就像打印屏幕一样打印出来

我使用的方法是Self.Print;按上面说的按钮,一切正常。我的按钮、标签和文本框都会打印出来。问题是,我试图打印的表单中有一个RichEdit,当页面从打印机出来时,RichEdit是空白的

我知道有更好的方法来打印表单中的信息,但这是按钮必须工作的当前方式

我发现一些论坛的主题是从2003年开始的,它们说要么不可能,要么我不得不使用RichEdit.Print方法,但这意味着打印机要打印两页而不是一页


是否有更好的方法打印整个软件包?

您可以将表单捕获为PNG或位图等图形,然后打印出来。RichEdit的所有内容是否都可以在屏幕上看到,或者有一些必须滚动到视图中吗?这取决于应用程序的用户在RichEdit中写了什么,因此可能需要滚动才能看到文本的结尾。如果是这样,那么唯一可靠的方法就是使用某种报告工具,如Fast Reports,Rave或Report Builder生成所需的格式化输出。那么你就很倒霉了。Windows不会绘制不可见的窗口区域;调用RichEdit.Print处理以专门方式绘制屏幕外内容。您可能正处于需要实际设计报告的阶段,而不仅仅是试图打印屏幕。虽然此代码可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文将提高其长期价值。
RichEdit1.Print(RichEdit1.Text);
PrintDialog1.Execute;//Choose your printer from list