阅读:2108回复:6
请教下面的对话框是怎么做的?
<P><b>请教下面的对话框是怎么做的?</b></P>
<P> <b> <P>各位编程高手: 我想请教上面的对话框是怎么做的?我用vb工具,就想获得一个文件夹的路径。</P> <P></b> </P> |
|
|
1楼#
发布于:2004-11-04 10:10
<P>看不到图片</P>
|
|
2楼#
发布于:2004-11-04 12:06
<P>晕啊,不可能啊,你再试试</P>
|
|
|
3楼#
发布于:2004-11-04 14:10
<P>'-------------------------------------------
' 通用对话框使用方法全解 '------------------------------------------- ' 洪恩在线 求知无限 '------------------------------------------- '------名称-----------------作用------------- ' CdlTest 通用对话框 ' CmdOpen “打开”对话框按钮 ' CmdSave “另存为”对话框按钮 ' CmdFont “字体”对话框按钮 ' CmdColor “颜色”对话框按钮 ' CmdPrint “打印”对话框按钮 ' CmdHelp “帮助”对话框按钮 '-------------------------------------------</P><P>'当“颜色”对话框按钮被按下时 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</P><P>'当“字体”对话框按钮被按下时 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</P><P>'当“帮助”对话框按钮被按下时 Private Sub CmdHelp_Click() On Error Resume Next '设置 HelpCommand 属性,显示 Visual Basic 帮助目录主题 CdlTest.HelpCommand = cdlHelpForceFile</P><P>'指定帮助文件 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 '上面是得到应用程序所在路径的小技巧</P><P>CdlTest.HelpFile = fullpath '显示“帮助”对话框 CdlTest.ShowHelp End Sub</P><P>'当“打开”对话框按钮被按下时 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</P><P>'当“打印”对话框按钮被按下时 Private Sub CmdPrint_Click() On Error Resume Next CdlTest.CancelError = True '显示“打印”对话框 CdlTest.ShowPrinter If Err = cdlCancel Then Exit Sub End Sub</P><P>'当“保存”对话框按钮被按下时 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</P> |
|
|
4楼#
发布于:2004-11-04 14:10
<P>'--------------------------------------
'用通用对话框同时选择多个文件 '-------------------------------------- ' 洪恩在线 求知无限 '-------------------------------------- '------名称-------------作用------------ ' mnuOpen “打开”菜单项 ' mnuExit “退出”菜单项 ' cmdExit “退出”按钮 ' CommonDialog1 通用对话框 ' Label1-2 标签 ' List1 显示选中文件的列表框 ListBox '--------------------------------------</P><P>Private Sub cmdExit_Click() Unload Me End Sub</P><P>Private Sub Form_Load()</P><P>End Sub</P><P>Private Sub mnuExit_Click() Unload Me End Sub</P><P> Private Sub mnuOpen_Click() Dim I As Integer Dim Y As Integer Dim Z As Integer '存储文件名的数组 Dim FileNames$()</P><P> CommonDialog1.FileName = "" CommonDialog1.Filter = "All Files|*.*" '为“打开”和“另存为”对话框返回或设置选项。 '语法 'object.Flags [= value] '------------------------------------------------------ 'Flags 属性语法有下列部分: '部分 描述 '------------------------------------------------------ 'object 对象表达式,其值是“应用于”列表中的对象。 'value 如“设置值”中所描述,是为“打开”和“另存为”对话框指定选项的常数或值。 '------------------------------------------------------ 'Value 的设置值是: '------------------------------------------------------ '常数 值 描述 '------------------------------------------------------ 'cdlOFNAllowMultiselect ;H200 它指定文件名列表框允许多重选择。运行时,通过按 SHIFT 键以及使用 UP ARROW 和 DOWN ARROW 键可选择多个文件。作完此操作后,FileName 属性就返回一个包含全部所选文件名的字符串。串中各文件名用空格隔开。 'cdlOFNCreatePrompt ;H2000 当文件不存在时对话框要提示创建文件。该标志自动设置 cdlOFNPathMustExist 和 cdlOFNFileMustExist 标志。 'cdlOFNExplorer ;H80000 它使用类似资源管理器的打开一个文件的对话框模板。适用于 Windows 95 和 Windows NT 4.0。 'cdlOFNExtensionDifferent ;H400 它指示返回的文件扩展名与 DefaultExt 属性指定的扩展名不一致。如果 DefaultExt 属性是 Null,或者扩展相匹配,或者没有扩展时,此标志不设置。当关闭对话框时,可以检查这个标志的值。 'cdlOFNFileMustExist ;H1000 它指定只能输入文件名文本框已经存在的文件名。如果该标志被设置,则当用户输入非法的文件名时,要显示一个警告。该标志自动设置 cdlOFNPathMustExist 标志。 'cdlOFNHelpButton ;H10 使对话框显示帮助按钮。 'cdlOFNHideReadOnly ;H4 隐藏只读复选框。 'cdlOFNLongNames ;H200000使用长文件名。 'cdlOFNNoChangeDir ;H8 强制对话框将对话框打开时的目录置成当前目录。 'cdlOFNNoDereferencelinks ;H100000不要间接引用外壳链接(也称作快捷方式)。缺省时,选取外壳链接会引起它被外壳间接引用。 'cdlOFNNoLongNames ;H40000 无长文件名。 'cdlOFNNoReadOnlyReturn ;H8000 它指定返回的文件不能具有只读属性,也不能在写保护目录下面。 'cdlOFNNoValidate ;H100 它指定公共对话框允许返回的文件名中含有非法字符。 'cdlOFNOverwritePrompt ;H2 使“另存为”对话框当选择的文件已经存在时应产生一个信息框,用户必须确认是否覆盖该文件。 'cdlOFNPathMustExist ;H800 它指定只能输入有效路径。如果设置该标志,输入非法路径时,应显示一个警告信息。 'cdlOFNReadOnly ;H1 建立对话框时,只读复选框初始化为选定。该标志也指示对话框关闭时只读复选框的状态。 'cdlOFNShareAware ;H4000 它指定忽略共享冲突错误。 '----------------------------------------------------- CommonDialog1.Flags = cdlOFNAllowMultiselect CommonDialog1.Action = 1 '它指定文件名列表框允许多重选择。运行时,通过按 SHIFT 键以及 '使用 UP ARROW 和 DOWN ARROW 键可选择多个文件。作完此操作后, 'FileName 属性就返回一个包含全部所选文件名的字符串。 '串中各文件名用空格隔开。 CommonDialog1.FileName = CommonDialog1.FileName ; Chr(32) '从返回的字符串中分离出文件名 '经过分离后FileNames(Y)数组存放着选择的文件名信息 '如果只有一个文件 FileNames(0)=“文件名” '如果有多个文件 FileNames(0)=“路径名” FileNames(1--y)=“文件名” '这时我们需要对数组进行处理 Z = 1 For I = 1 To Len(CommonDialog1.FileName) 'InStr函数,返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。 '语法 InStr(起点位置, string1, string2) I = InStr(Z, CommonDialog1.FileName, Chr(32)) If I = 0 Then Exit Sub ReDim Preserve FileNames(Y) 'Mid函数,返回 Variant (String),其中包含字符串中指定数量的字符。 '语法 Mid(string, start[, length]) FileNames(Y) = Mid(CommonDialog1.FileName, Z, I - Z) Z = I + 1 Y = Y + 1 Next '先清空列表框中已有内容 List1.Clear '如果只有一个文件 FileNames(0)=“文件名” If Y = 1 Then List1.AddItem FileNames(0) '如果文件个数为多个,将“路径”+“\”+“文件名”后作为完整的文件名 Else For I = 1 To Y - 1 List1.AddItem FileNames(0) ; "\" ; FileNames(I) Next End If End Sub </P> |
|
|
5楼#
发布于:2004-11-09 08:27
有两个API可以实现它!
|
|
6楼#
发布于:2004-11-09 17:57
没有现成的控件吗?Delphi的simple控件里好像有一个shelldirList的控件可以直接用,不知道vb里有没有啊?
|
|
|