FromPage和ToPage属性指定打印的起始页码和终止页码。这两个属性为直接输入型属性,其默认值都为0。
4)MaxPage和MinPage属性
MaxPage和MinPage属性决定能输入的最大和最小的打印页数。这两个属性为直接输入型属性,其默认值都为0。
5)Options属性
Options属性决定对话框的外观和行为。该属性为集合型属性,包含6个子属性,其值为True时的含义如表8-7所示。
6)PrintRange属性
PrintRange属性指明对话框中选定的打印范围。该属性为枚举性属性,有3种取值,分别对应对话框中的3种可能的选择:
prAllPage--打印所有页,【全部】单选按钮被选中;prPageNums--按页码打印指定页,【页码范围】单选按钮被选中(MinPage=0);prSelection--选择打印指定页,【选定范围】单选按钮被选中。
7)PrintToFile属性
PrintToFile属性决定【打印到文件】复选框是否被选中。该属性为布尔型属性,其值为True时,【打印到文件】复选框被选中,其默认值为False。
显然,要通过打印机正常打印,【打印到文件】复选框不能被选中。
PrintDialog组件没有特殊的方法与事件。
8.3.10PrinterSetupDialog(打印机设置对话框)组件
PrinterSetupDialog组件的图标为。
调用PrinterSetupDialog组件的Execute方法,打开的【打印设置】对话框如图8-17所示。
【打印设置】对话框用于选择打印机,设置打印的属性,如纸张的大小、打印的方向等。
PrinterSetupDialog组件没有需要说明的属性,它的Execute方法的使用也和其他通用对话框组件一样。
8.4对话框的设计
如前所述,对话框也是一种窗口。因此,除了使用以上两种对话框,还可以根据需要,用设计窗体的方法,自己设计对话框。
本节将分别介绍模态对话框和非模态对话框的设计。
8.4.1模态对话框的设计
显示模态对话框要调用窗体的ShowModal方法。这里通过一个实例说明模态对话框的设计步骤。
例8-1设计一个模态对话框。
(1)执行【File】→【New】→【Application】菜单命令,新建主窗体Form1。
(2)设置主窗体属性,如表8-8所示。
(6)向对话框窗体添加组件并设置属性。
添加两个复选框CheckBox组件、两个位图按钮BitBtn组件,组件属性设置如表8-11所示。
这里使用了位图按钮,它的类型由其Kind属性决定。不同类型的位图按钮,其外观不同,单击后都关闭按钮所在的窗体,而返回值不同,如BitBtn1的Kind属性为mbOK,返回mrOK,BitBtn2的Kind属性为mbCancel,返回mrCancel。
设置了窗体和组件属性的对话框窗体如图8-19所示。
(7)编写程序代码。
根据程序功能要求,单击【显示控制】按钮,显示【显示控制】模态对话框。在对话框中,通过复选框选择要显示的文本,若单击【确定】按钮,关闭对话框,返回mrOK,主窗体按选择的文本显示;若单击【取消】按钮,关闭对话框,返回mrCancel,主窗体仍显示原来的文本。
因此,单元文件Unit1的程序代码为:
主窗体调用对话框窗体,所以Unit1文件的implementation段中加usesUnit2。
为记忆原来显示的文本,定义两个变量old1、old2。
对话框为模态对话框,所以对话框的显示用ShowModal方法。
单击【显示控制】按钮,显示对话框,所以选择Button1的OnClick事件。
于是单元文件Unit1的部分代码为:
(8)保存文件Unit1、Unit2、Project1。
(9)运行程序。
单击工具栏中的【Run】按钮,显示主窗口,如图8-20所示。
单击【显示控制】按钮,打开【显示控制】对话框,如图8-21所示。
在对话框中,两个复选框都不选或只选一个复选框,单击【确定】按钮,则返回主窗口后按新选择显示文本,图8-22即为只选一个复选框的显示。
而在对话框中,无论怎样选择,单击【取消】按钮,主窗口仍显示原来的文本。
打开对话框后,如果不关闭对话框,就不能切换到主窗口去,这正是模态对话框的特点。
8.4.2非模态对话框的设计
显示非模态对话框要调用窗体的Show方法,因为Show方法是过程,所以非模态对话框没有返回值。这里也通过一个实例说明非模态对话框的设计步骤。
例8-2设计一个非模态对话框。
(1)执行【File】→【New】→【Application】菜单命令,新建主窗体Form1。
(2)设置主窗体属性,如表8-12所示。
(3)向主窗体中添加组件并设置组件属性。
添加两个标签Label组件、一个按钮Button组件,组件属性设置如表8-13所示。
(4)执行【File】→【New】→【Form】菜单命令,新建对话框窗体Form2。
(5)设置对话框窗体属性,如表8-14所示。
(7)编写程序代码。
根据程序功能要求,单击【字体样式】按钮,显示【字体样式】非模态对话框。在对话框中,通过复选框选择字体样式,“字体样式显示示例”按选择的字体样式显示,这时若单击【应用】按钮,主窗体按选择的字体样式显示;若单击【取消】按钮,主窗体仍按原来的字体样式显示。
因此,程序代码为:
主窗体调用对话框窗体,所以Unit1文件的implementation段中加usesUnit2。
对话框为非模态对话框,所以对话框的显示用Show方法。
单击【字体样式】按钮,显示对话框,所以选择Button1的OnClick事件。
于是单元文件Unit1的部分代码为:
单击【应用】按钮,主窗口文本应按对话框选择的字体样式显示,所以【应用】按钮的OnClick事件处理过程代码为:
procedureTStyleDlg.BitBtn1Click(Sender:TObject);
begin
Form1.Label1.Font.Style:=Label1.Font.Style;
Form1.Label2.Font.Style:=Label1.Font.Style;
end;
单击【取消】按钮,字体样式选择不起作用,所以不响应该按钮。
(8)保存文件Unit1、Unit2、Project1。
(9)运行程序。
单击工具栏中的【Run】按钮,显示主窗口,如图8-25所示。
单击【字体样式】按钮,打开【字体样式】对话框,如图8-26所示。
在对话框中,两个复选框都选或只选一个复选框,“字体样式显示示例”按选择的字体样式显示,对话框如图8-27所示。
这时主窗口的文本显示不受影响,只有当单击【应用】按钮时,主窗口文本才会按新选择字体样式显示,如图8-28所示。
因为对话框为非模态,所以不关闭对话框,也可以将主窗口切换为当前窗口。
习题8
1.Delphi有几种标准对话框?各如何使用?
2.在程序中如何打开Delphi对话框组件的对话框?
3.模态对话框和非模态对话框有什么区别?设计模态对话框和非模态对话框的主要不同之处在什么地方?
4.设计一个应用程序,单击其上的【登录】按钮,弹出【登录】对话框,要求输入用户的姓名、口令信息;若两项都输入了,单击对话框的【确定】按钮,对话框关闭;若只输入了一项,弹出“输入数据不全”的消息框。