热情软件屋

 

在CommonDialog控件中如何选取多个文件


编号:QA001638
建立日期: 1999年9月1日 最后修改日期:2000年4月22日
所属类别:

ken:
    vb6
    pwin98
    在CommonDialog控件中,好象只能选取一个文件。请问如何选取多个文件?就象xing那样,在文件框里用鼠标选取一串文件。

回答:

    CommonDialog控件的Flags属性有一个标志cdlOFNAllowMultiselect。利用这个标志可以实现多选。如:
    CommonDialog1.Flags = CommonDialog1.Flags + cdlOFNAllowMultiselect
    无论是在 Windows NT 4.0 还是在 Windows 95 中,如果 cdlOFNAllowMultiselect 标志被单独使用,都不能支持长文件名。这是因为多重文件名要包括空格分隔符,而长文件名也可能包括空格符。在 Windows NT 3.5 中,无法避免这种情况。如果使用 cdlOFNAllowMultiselect,就不能看到长文件名。如果在 Windows 95 中添加 cdlOFNExplorer 标志,就可以既能文件多选,又能看到长文件名。但是,这些文件名是用空字符Chr(0)分隔符,而不是空格分隔符隔开。因此,cdlOFNAllowMultiselect 和 cdlOFNExplorer 一起使用时,在 Windows 95 和 Windows NT 3.5中需要不同的文件名所得结果的语法分析。
    当使用 cdlOFNAllowMultiselect 标志时,可能希望增加 MaxFileSize 属性的尺寸以便对所选文件名有足够的内存。MaxFileSize 属性要分配内存以便存储所选的一个或多个文件的实际名称。该属性的范围是 1-32K。缺省值是 256。
    下面是一个例子:
    Private Sub Command1_Click()
     Dim I As Integer
     Dim Y As Integer
     Dim Z As Integer
     Dim FileNames$()
    
     CommonDialog1.FileName = ""
     CommonDialog1.Filter = "All Files|*.*"
     CommonDialog1.Flags = cdlOFNAllowMultiselect + cdlOFNExplorer
     CommonDialog1.Action = 1
    
     CommonDialog1.FileName = CommonDialog1.FileName & Chr(0)
    
     Z = 1
     For I = 1 To Len(CommonDialog1.FileName)
     I = InStr(Z, CommonDialog1.FileName, Chr(0))
     If I = 0 Then Exit For
     ReDim Preserve FileNames(Y)
     FileNames(Y) = Mid(CommonDialog1.FileName, Z, I - Z)
     Z = I + 1
     Y = Y + 1
     Next
    
     If Y = 1 Then
     Text1.Text = FileNames(0)
     Else
     Text2.Text = ""
     For I = 0 To Y - 1
     If I = 0 Then
     Text1.Text = FileNames(I)
     Else
     Text2.Text = Text2.Text & UCase(FileNames(I)) & _
    Chr$(13) & Chr$(10)
     End If
     Next
     End If
    End Sub

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio