对话框是windows中的一种很重要的界面,和一般窗口不同,对话框的大小不能改变,所以和改变窗口大小的组成都没有,如不能有最大化按钮和最小化按钮,无控制菜单,无边框等。Visual Basic中的对话框分为3种类型,即预定义对话框、自定义对话框和通用对话框。预定义对话框是指由MsgBox和InputBox函数建立的简单的对话框,如果需要比输入框或信息框功能更复杂的对话框,则只能由用户自己建立,但如果使用平常界面的建立方法制作对话框,将会花费较多的时间和精力。为此,Visual Basic 6.0提供了通用对话框控件,用它可以快速地制作较为通用的对话框。如打开、保存对话框、颜色对话框、字体对话框和打印对话框等。
一、通用对话框控件
通用对话框控件不是标准控件,缺省情况下,工具箱中无该控件,添加该控件的方法是:通过“工程”菜单中的“部件”命令,在对话框中添加“Microsoft common dialog control 6.0”部件,则能在工具箱中添加通用对话框控件。
通用对话框可以提供六种形式的对话框。在代码中可通过设置action属性或调用该控件的show方法来产生不同的对话框,具体设置如下表所示:
表8.17 通用对话框的属性及其设置
Action属性值 |
对话框类型 |
方法 |
1 |
打开文件(open) |
ShowOpen |
2 |
保存文件(save as ) |
ShowSave |
3 |
选择颜色(color) |
ShowColor |
4 |
选择字体(font) |
ShowFont |
5 |
打印(print) |
ShowPrinter |
6 |
帮助文件(help) |
showHelp |
二、文件对话框
文件对话框包括打开(Open)文件对话框和保存文件(Save As)对话框,如图8.26所示:
图8.26 “打开”对话框的组成
图8.27 “另存为”对话框的组成
文件对话框主要用来获取用户指定的文件信息并供程序使用,如:“D:\myword.doc”,但是需注意的是对话框本身并不提供打开文件和另存为功能,这些功能需另外编写代码。
使用通用对话框控件建立“打开”和“保存文件”对话框时,可对通用对话框控件进行设置的主要属性及其含义见表8.18:
表8.18 通用对话框控件建立文件对话框的常用属性及含义
属性 |
含义 |
DefaultExt |
设置对话框缺省的文件扩展名。当开或保存一个没有扩展名的文件时,自动给该文件指定由 DefaultExt 属性指定的扩展名 |
DialogTitle |
设置对话框的标题。在缺省情况下,“打开”对话框的标题是“打开”;“保存”对话框的标题是“另存为” |
FileName |
设置或返回要打开或保存文件的路径及文件名。可以设置默认打开或保存的文件名和返回用户在对话框中所选文件的路径和文件名 |
FileTitle |
返回用户所选文件的文件名,但不包含路径 |
Filter |
设置对话框的文件列表框中显示的文件的类型 Filter属性由一对或多对字符串组成,每对字符串包括文字说明和过滤器两部分。 格式:通用对话框控件名称.Filter =“文字说明|过滤器1|文字说明|过滤器2……” 举例: CommonDialog1.Filter = "All Files|*.*|(*.doc)|*.doc|(*.txt)|*.txt" 文件列表框中显示如图8.28所示的列表 |
FilterIndex |
设置默认的过滤器。用Filter属性设置好过滤器后,每个过滤器都有一个值,第一个过滤器的值为1,第二个过滤器的值为2,依此类推。FilterIndex属性用来设置默认的过滤器。 |
InitDir |
用来指定对话框中的初始目录,如果未指定该属性的值,则是当前目录 |
图8.28 文件类型
表8.19 文件对话框中常用的Flags属性值及其含义
值 |
常量 |
功能 |
1 |
vbOFNReadOnly |
显示“只读检查”选择框 |
2 |
vbOFNOverwritePrompt |
如果用已有的文件名保存文件,则显示一个消息框,询问是否覆盖已有的文件 |
4 |
vbOFNHideReadOnly |
不显示“只读检查”复选框 |
8 |
vbOFNNoChangeDir |
保留当前目录 |
16 |
vbOFNShowHelp |
显示一个help 按钮 |
256 |
vbOFNNoValidate |
允许在文件中有无效字符 |
512 |
vbOFNAllowMultiselect |
允许用户通过shift键与光标移动键组合或鼠标组合选择多个文件,各文件名用空格隔开 |
[例8-7]编一个能打开文件和保存文件的程序,打开时要求能将文件的内容在文本框中显示,保存时能将文本框中的内容存到.doc或.txt类型的文件,具有清空文本框的功能。界面设计如图8.29所示:
图8.29 程序主界面
操作步骤:
1.在当前窗体上放置通用对话框控件,然后插入三个按钮和一个文本框,具体属性设置如下表8.20所示。
表8.20 界面中各对象属性设置
控件 |
属性 |
值 |
属性 |
值 |
文本框 |
name |
Text1 |
||
打开按钮 |
name |
Command1 |
Caption |
打开(&O) |
保存按钮 |
name |
Command2 |
Caption |
保存(&S) |
清空按钮 |
name |
Command3 |
Caption |
清空(&C) |
窗体 |
Name |
Form1 |
Caption |
文件对话框 |
通用对话框 |
name |
CommonDialog1 |
2.为“打开”按钮编写的程序代码
在单击“打开”按钮的事件过程中需要用CommonDialog1.Action = 1来启动“打开”对话框。当单击“打开”按钮后,显示“打开文件”对话框,如图8.30所示,
图8-30 “打开文件”对话框
并在该对话框中选择要打开的文件,则对话框的FileName属性的值便能获得所打开的文件的存储信息,即被用户选中的文件的盘符、路径和文件名信息被作为一个长字符串存储在该属性中,但此时并没有实际执行打开一个文件的操作,需通过文件处理方面的命令来实现文件的打开。具体代码如下:
Private Sub Command1_Click()
CommonDialog1.FileName = ""
CommonDialog1.InitDir = "d:\"
CommonDialog1.Flags = cdlOFNFileMustExist
CommonDialog1.Filter = "All Files|*.*|(*.doc)|*.doc|(*.txt)|*.txt"
CommonDialog1.FilterIndex = 4
CommonDialog1.DialogTitle = "打开文件"
CommonDialog1.Action = 1
If CommonDialog1.FileName = "" Then
MsgBox "您没选择文件", 37, "错误"
Else
Open CommonDialog1.FileName For Input As #1
Do While Not EOF(1)
Input #1, a$
Text1.Text = Text1.Text & Chr(13) + Chr(10) & a$
Loop
End If
Close #1
End Sub
上述粗体代码实现了打开操作。
3.为“保存”按钮编写的程序代码
与“打开”对话框一样,“保存文件”对话框也是利用FileName属性值获得所打开的文件的存储信息,而本身没有执行保存文件的功能,同样,用户可使用文件操作命令来编写实现保存文件的程序代码,具体代码如下:
Private Sub Command2_Click()
CommonDialog1.CancelError = False
CommonDialog1.InitDir = "d:\"
CommonDialog1.DefaultExt = "txt"
CommonDialog1.FileName = "mytest.txt"
CommonDialog1.Filter = "Document Files(*.doc)|*.doc_
|All Files(*.*)|*.*|Text Files(*.txt)|*.txt"
CommonDialog1.FilterIndex = 1
CommonDialog1.DialogTitle = "保存文件"
CommonDialog1.Flags = 2050
CommonDialog1.Action = 2
If CommonDialog1.FileName = "" Then
MsgBox "您没输入文件名", 37, "错误"
Else
Open CommonDialog1.FileName For Output As #1
a$ = Text1.Text
Write #1, a$
End If
Close #1
End Sub
上述粗体代码实现了保存操作。
4.为“清除”按钮编写的程序代码
Private Sub Command3_Click()
Text1.Text = ""
End Sub
三、颜色对话框
颜色对话框用来设置颜色。通过使用通用对话框控件的ShowColor方法或将其action属性值设为3时可显示颜色对话框。如图8.31所示:
图8.31 “颜色”对话框
它具有与文件对话框相同的一些属性,包括CancelError、DialogTitle、HelpCommand、HelpContext、HelpFile和HelpKey,此外还有两个主要的属性,即Color属性和Flags属性。
颜色 (Color)属性用来设置或返回指定的颜色,每一个“颜色”值对应一个颜色,如红色为255,黄色为65535等。再如text1.forecolor=CommonDialog1.Color可将在颜色对话框中选定的颜色应用于文本框的前景色。
标志(flags)属性用来定义对话框的类型,具体功能详见表8.21:
表8.21 颜色对话框中的Flags属性
值 |
常量 |
功能 |
1 |
vbCCRGBInit |
使color属性定义的颜色在首次显示对话框时显示出来 |
2 |
vbCCFullOpen |
能显示自定义颜色窗口 |
4 |
vbCCPreventFullOpen |
不显示自定义颜色按钮 |
8 |
vbCCShowHelp |
显示一个help 按钮 |
图8.32 程序主界面
操作步骤:
1.在例8-7的窗体上增加按钮Command4,将其caption设为“颜色&Y”,同时把Form1的caption属性值设为“通用对话框”。
2. 编写颜色按钮的单击事件过程。具体代码如下:
Private Sub Command4_Click()
CommonDialog1.ShowColor
Text1.ForeColor = CommonDialog1.Color
End Sub
其中CommonDialog1.ShowColor用于将对话框定义成颜色对话框,并打开颜色对话框,Text1.ForeColor = CommonDialog1.Color是将用户选择好颜色并充当文本框的前景色。如将文字设置成红色,运行效果见图8.33。
图8.33 设置文本框的前景色
四、字体对话框
字体对话框是Windows界面中很重要的组成,它可以用来给文字指定字体、大小、颜色、下划线等。同样,可以通过使用通用对话框控件的ShowFont方法或将其action属性值设为4来显示该对话框,如图8.34所示:
图8.34 “字体”对话框
字体对话框具有Flags、FontBold、FontItalic、FontName、FontSize、FontStrikeThru和FontUnderline这些属性。其中flags属性确定了字体对话框的样式,在显示字体对话框之前必须设置flags标志,否则就会出现不存在字体等错误。有关字体对话框中常用的Flags属性值及其含义见下表8.22。
表8.22 字体对话框中常用的Flags属性值及其含义
值 |
常量 |
功能 |
1 |
vbScreenFonts |
只显示屏幕字体 |
2 |
vbCFPrinterFonts |
只显示打印机字体 |
3 |
vbCFBoth |
显示打印机字体和屏幕字体 |
4 |
vbCFShowHelp |
显示help按钮 |
256 |
vbCFEffects |
允许下划线、中划线和颜色 |
512 |
vbCFApply |
允许apply按钮 |
1024 |
vbCFANSIOnly |
不允许使用windows字符集字体 |
262144 |
vbCFTTOnly |
只显示TrueType字体 |
[例8-9]在例8-8的基础上,增加一个“字体”按钮,通过使用该按钮能够对文本框的文本进行字体、字号、字型等的设置。程序界面如下:
图8.35 通用对话框主界面
操作步骤:
1.在例8-8的窗体上增加按钮Command5,将其caption设为“字体&F”。
2. 编写字体按钮的单击事件过程。具体代码如下:
Private Sub Command5_Click()
CommonDialog1.Flags = 3 Or 256
CommonDialog1.Action = 4
Text1.FontName = CommonDialog1.FontName
Text1.FontSize = CommonDialog1.FontSize
Text1.FontBold = CommonDialog1.FontBold
Text1.FontItalic = CommonDialog1.FontItalic
Text1.FontUnderline = CommonDialog1.FontUnderline
Text1.FontStrikethru = CommonDialog1.FontStrikethru
End Sub
其中CommonDialog1.Action = 4用于将对话框定义成“字体”对话框,CommonDialog1.Flags = 3 Or 256 表示显示打印字体和屏幕字体,同时显示删除线和下划线检查框以及颜色组合框,如上图所示。
当选中某种字体、字形、大小等效果后,以上代码便实现将选中的属性赋值给文本框相应的属性。运行效果见图8.36:
图8.36 设置字体效果
五、打印对话框
打印对话框可以指定打印输出方式、选择打印机、设置打印范围和份数等,并可以配置或重新安装默认的打印机。通过使用通用对话框控件的ShowPrinter方法或将其action属性值设为5来显示该对话框,如图8.37所示:
图8.37 “打印”对话框
打印对话框具有Flags、Copies、FromPage、ToPage、PrinterDefault、Max和Min这些属性。flags属性可设置对话框相应的功能,有关打印对话框中常用的Flags属性值及其含义见下表:
表8.23 字体对话框中常用的Flags属性值及其含义
值 |
常量 |
功能 |
0 |
vbPDAllPages |
显示“所有页”选项按钮 |
1 |
vbPDselection |
显示“选定范围”选项按钮 |
2 |
vbPDPageNums |
显示“页”选项按钮 |
4 |
vbPDNoSelection |
禁止“选定范围”选项按钮,见图 |
8 |
vbPDNoPageNums |
禁止“页”选项按钮 |
32 |
vbPDPrintToFile |
显示“打印到文件”复选框 |
64 |
vbPDPrintSetup |
显示“打印设置”对话框 |
其它属性的功能见表8.24:
表8.24 字体对话框中其它属性功能
属性 |
功能 |
Copies |
返回打印份数 |
FromPage |
开始打印的页码 |
ToPage |
打印的结束页码 |
HDC |
分配给打印机的句柄 |
Max,Min |
设置打印范围允许的最大和最小值 |
PrinterDefault |
表示是否可以设置默认打印机,如果为True,则可以,反之不可以。 |
[例8-10]在例8-9的基础上,增加一个“打印”按钮,实现打印功能。程序界面如下:
图8.38 增加了“打印”按钮
操作步骤:
1.在例的窗体上增加按钮Command6,将其caption设为“打印&P”。
2. 在原有代码后面添加事件过程。具体代码如下:
Private Sub Command6_Click()
CommonDialog1.Flags = 4
CommonDialog1.Copies = 5
CommonDialog1.ShowPrinter
End Sub
注意:打印对话框只能通过Copies、FromPage、ToPage等属性返回在对话框中的设置值,而不能实现打印操作,如果要启动实际的打印过程,必须编写相应的程序代码。
六、帮助对话框
软件往往都会提供帮助功能,用于介绍软件功能及操作方法。通过通用对话框控件的ShowHelp方法或将其action属性值设为6可以显示帮助对话框,对话框通过HelpCommand 属性指定帮助的类型,用HelpFile属性来显示具体的帮助文件,但帮助文件需要用其它的工具制作。
在上述例中增加以下代码,单击窗体即可显示出记事本的帮助文档。
Private Sub Form_click()
CommonDialog1.HelpCommand = cdlHelpForceFile '确定联机帮助的类型
CommonDialog1.HelpFile = "C:\WINDOWS\Help\notepad.hlp"
'显示要帮助的文件名
CommonDialog1.ShowHelp
End Sub