一、Windows 窗体的显示模式
在Windows中,显示存在作为窗体和对话框要么是有模式的,要么是无模式的。
“模式”窗体或对话框必须关闭或隐藏,然后您才能继续使用应用程序的其余部分。当我们要显示重要消息的对话框应始终是有模式的。例如 MessageBox 是一个可供您使用的有模式的窗体。
“无模式”窗体让您在此窗体与另一窗体之间变换焦点,而不必关闭初始窗体。 用户在该窗体显示的同时可继续在任何应用程序的其他位置工作。
作为编程,执行代码是一条一条向下执行的,“模式”窗体或对话框,是严格执行这一规律,查找问题较容易。“无模式”窗体,执行代码可以跨越出的现对话框(或模块),进入另一窗体或下一段代码。因此,无模式窗体的编程难度更大,因为用户访问这些窗体的顺序可能无法预知。不论用户执行什么操作,都必须使该应用程序的状态保持一致。 工具窗口经常以无模式方式显示。
二、GridppReport.PrintPreview
GridppReport.PrintPreview方法在Grid++Report提供的缺省打印预览窗口中预览报表。调用此方法后,首先生成报表数据,过程中会触发一系列事件;然后生成打印页面,过程中也会触发一系列事件;最后打开缺省预览窗口并将生成的打页面显示在窗口中。
PrintPreview(True); “模式”窗体,调用PrintPreview
PrintPreview(False); “无模”窗体,调用PrintPreview
三、实际运用
实际编程时,运用无模式,可以跳过(停滞代码)的特点,实现打印目的。
1、软件中尽可能使用“模式”调用PrintPreview(True);
2、使用第三方AlphaControls控件,调用PrintPreview时,使用模式会出现窗口停滞,应采用无模式方式回避(跳过)造成停滞的皮肤代码实现打印。
在软件中,设置一个全局变量 PrintShowModal:=False
调用时:
GridppReport1.PrintPreview( PrintShowModal );
3、通过While循环调用Table数据调用打印模块(打印单面),实现连续打印。
此时,应采取模式显示打印,如果调用PrintPreview(False),会出现仅读取首个数据,打印都是第一个信息错误。改用PrintPreview(True)实现步骤打印的效果。
4、实际运用时,最好二者对调,测试那种效果好。