CommonDialog控件 打开对话框
时间:[2006-2-22 17:00:59] 作者:未知
CommonDialog控件是常用的一个控件,它为我们提供了打开、另存为、字体、颜色、打印、帮助等几种类型的标准对话框,本例演示了所有这些类型的对话框的使用方法。
如果控件面板中没有CommonDialog控件的小图标,必须先从添加控件对话框”中添加,下面我们来看看怎样调用不同类型的对话框。
CommonDialog控件有一系列的Show方法,例如:ShowOpen、ShowSave、ShowFont、ShowColor、ShowPrinter、ShowHelp等,这些方法的使用语法是类似的,如下所示:
object.ShowOpen,我们只须在程序中写入这个语句,就能调出“打开”对话框,同样也能调用其它类型的对话框。
而CommonDialog控件的属性是和不同的对话框类型紧密相关的,有些属性只适用于某一类对话框,有些属性在不同的对话框中的属性是有差别的,所以下面分类列出了和不同对话框相关联的属性的用法。
与ShowOpen、ShowSave方法相关的属性:
FileName属性:返回或设置所选文件的路径和文件名,如果在使用Show方法以前使用FileName属性,则设定了对话框的默认文件名;如果是在以后使用则返回选择的文件名。
使用语法是: CommonDialog.Filename[=pathname]
Filter属性:返回或设置在对话框的类型列表框中所显示的过滤器(也就是限定打开或保存为的文件类型),它的使用语法是:
object.Filter [= 描述文字1 |过滤标示1 |描述文字2 |过滤标示2]
其中描述文字为任意文字,而过滤标示则采用*.文件后缀(例如:*.bmp)的格式,描述文字和过滤标示之间用“|”隔开。
DefaultExt属性:为该对话框返回或设置缺省的文件扩展名,也就是当我们没有指定打开或保存的文件类型时,按DefaultExt属性所设置的扩展名为默认值。
与ShowFont方法相关的属性:
Color选定的颜色。为使用此属性,必须先将Flags属性设置为cdlCFEffects。
FontBold 是否选定“粗体”。
FontItalic 是否选定“斜体”。
FontStrikethru 是否选定删除线。
FontUnderline 是否选定下划线。
FontName 选定的字体名称。
FontSize 选定的字体大小。
使用的语法是直接引用,比如我们要根据“字体对话框”返回的值设置文本框的字体,则直接采用语句:Text.Font=CommonDialog.FontnName
与ShowColor方法相关的属性:
Color选定的颜色。为使用此属性,必须先将Flags属性设置为cdlCFEffects。
与ShowHelp方法相关的属性:
HelpCommand属性 返回或设置需要的联机帮助的类型
HelpFile属性 确定帮助文件的路径和文件名
语法是: object.HelpFile[ = filename]
下面看看CancelError属性,它设置当选取“取消”按钮时是否认为出错,使用的语法是:CommonDialog.CancelError[= boolean] (boolean指布尔型变量)
如果我们把它设为True,则当使用者选取了“取消”按钮时程序会返回一个cdlCancel错误,通过捕捉这个错误并加以处理,我们就能避免程序的出错。具体的使用可在源码中看到实例。
为了学习方便,提供的源码已经作了详细的中文注释,看看源码框中的代码:
'-------------------------------------------
' 通用对话框使用方法全解
'------名称-----------------作用-------------
' CdlTest 通用对话框
' CmdOpen “打开”对话框按钮
' CmdSave “另存为”对话框按钮
' CmdFont “字体”对话框按钮
' CmdColor “颜色”对话框按钮
' CmdPrint “打印”对话框按钮
' CmdHelp “帮助”对话框按钮
'-------------------------------------------
'当“颜色”对话框按钮被按下时
Private Sub CmdColor_Click()
On Error Resume Next
CdlTest.CancelError = True
CdlTest.Flags = cdlCCRGBInit
CdlTest.ShowColor
If Err = cdlCancel Then Exit Sub
TextBoxColor.ForeColor = CdlTest.Color
End Sub
'当“字体”对话框按钮被按下时
Private Sub CmdFont_Click()
On Error Resume Next
'当用户按下“取消”按钮,返回一个错误信息,这样使我们可以对其进行控制
CdlTest.CancelError = True
'此句必须要
CdlTest.Flags = cdlCFBoth + cdlCFEffects
'显示“字体”对话框
CdlTest.ShowFont
'出现“取消”错误时,跳出
If Err = cdlCancel Then
Exit Sub
Else
'将TextBox的字体属性根据“字体”对话框的变化作相应设置
'如果用户选择了字体才将字体改变,避免字体为空的错误
If CdlTest.FontName <> Then
TextBoxFont.FontName = CdlTest.FontName
End If
TextBoxFont.FontSize = CdlTest.FontSize
TextBoxFont.FontBold = CdlTest.FontBold
TextBoxFont.FontItalic = CdlTest.FontItalic
TextBoxFont.FontStrikethru = CdlTest.FontStrikethru
TextBoxFont.FontUnderline = CdlTest.FontUnderline
End If
End Sub
'当“帮助”对话框按钮被按下时
Private Sub CmdHelp_Click()
On Error Resume Next
'设置 HelpCommand 属性,显示 Visual Basic 帮助目录主题
CdlTest.HelpCommand = cdlHelpForceFile
'指定帮助文件
Dim fullpath As String
If Right(App.Path, 1) = \ Then ' 若 App.Path 为根目录
fullpath = App.Path + test.hlp
Else
fullpath = App.Path + \ + test.hlp
End If
'上面是得到应用程序所在路径的小技巧
CdlTest.HelpFile = fullpath
'显示“帮助”对话框
CdlTest.ShowHelp
End Sub
'当“打开”对话框按钮被按下时
Private Sub CmdOpen_Click()
'出现错误时跳到下一语句
On Error Resume Next
CdlTest.CancelError = True
'属性DialogTitle是要弹出的对话框的标题
CdlTest.DialogTitle = 打开文件
'缺省的文件名为空
CdlTest.FileName =
'属性Filter是文件滤器,返回或设置在对话框的类型列表框中所显示的过滤器。
'语法object.Filter [= 文件类型描述1 |filter1 |文件类型描述2 |filter2...]
CdlTest.Filter = 文本文件(.txt)|*.txt
'Flags属性的用法依据不同的对话框而变,详细使用需要查找联机帮助手册
CdlTest.Flags = cdlOFNCreatePrompt + cdlOFNHideReadOnly
CdlTest.ShowOpen
If Err = cdlCancel Then Exit Sub
TextBoxOPen.Text = CdlTest.FileName
End Sub
'当“打印”对话框按钮被按下时
Private Sub CmdPrint_Click()
On Error Resume Next
CdlTest.CancelError = True
'显示“打印”对话框
CdlTest.ShowPrinter
If Err = cdlCancel Then Exit Sub
End Sub
'当“保存”对话框按钮被按下时
Private Sub CmdSave_Click()
On Error Resume Next
CdlTest.CancelError = True
CdlTest.DialogTitle = 保存文件
CdlTest.FileName =
'解释见上面
CdlTest.Filter = 文本文件(*.txt)|*.txt
CdlTest.Flags = cdlOFNCreatePrompt + cdlOFNHideReadOnly
CdlTest.ShowSave
If Err = cdlCancel Then Exit Sub
TextBoxSave.Text = CdlTest.FileName
End Sub
【声明】本站刊载的《CommonDialog控件 打开对话框》一文如果有侵害你权益的情况,请联系我们。我们将及时采取措施。
QQ:44637339 Email:just6@163.com Tel:13355163107 Lining studios