方雨田
路人甲
路人甲
  • 注册日期2004-04-24
  • 发帖数24
  • QQ
  • 铜币186枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1936回复:6

请教下面的对话框是怎么做的?

楼主#
更多 发布于:2004-11-03 23:47
<P><b>请教下面的对话框是怎么做的?</b></P>

<P></P>
<b>
<P>各位编程高手:
    
      我想请教上面的对话框是怎么做的?我用vb工具,就想获得一个文件夹的路径。</P>
<P></b>
 </P>
喜欢0 评分0
我们是一个飘然的梦; 我们是一缕飞翔的风; 我们是一段没有发生的回忆!
hongxiang
路人甲
路人甲
  • 注册日期2004-11-04
  • 发帖数67
  • QQ
  • 铜币2393枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-11-04 10:10
<P>看不到图片</P>
举报 回复(0) 喜欢(0)     评分
方雨田
路人甲
路人甲
  • 注册日期2004-04-24
  • 发帖数24
  • QQ
  • 铜币186枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-11-04 12:06
<P>晕啊,不可能啊,你再试试</P>
我们是一个飘然的梦; 我们是一缕飞翔的风; 我们是一段没有发生的回忆!
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
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>
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
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>
举报 回复(0) 喜欢(0)     评分
PRambler
路人甲
路人甲
  • 注册日期2004-09-06
  • 发帖数49
  • QQ
  • 铜币140枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2004-11-09 08:27
有两个API可以实现它!
举报 回复(0) 喜欢(0)     评分
方雨田
路人甲
路人甲
  • 注册日期2004-04-24
  • 发帖数24
  • QQ
  • 铜币186枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-11-09 17:57
没有现成的控件吗?Delphi的simple控件里好像有一个shelldirList的控件可以直接用,不知道vb里有没有啊?
我们是一个飘然的梦; 我们是一缕飞翔的风; 我们是一段没有发生的回忆!
举报 回复(0) 喜欢(0)     评分
游客

返回顶部