Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

123下一頁(yè)
返回列表 發(fā)新帖
樓主: tmtony
打印 上一主題 下一主題

競(jìng)賽[高8]最好和最簡(jiǎn)潔的文件打開(kāi)對(duì)話(huà)框功能

[復(fù)制鏈接]
11#
發(fā)表于 2008-3-5 09:28:21 | 只看該作者
調(diào)用一個(gè)打開(kāi)對(duì)話(huà)框容易,寫(xiě)一個(gè)特色對(duì)話(huà)框就非得用API
見(jiàn)過(guò)別人的對(duì)話(huà)框可加上SKIN的, 很漂亮 還找不到思路
回復(fù)

使用道具 舉報(bào)

12#
發(fā)表于 2008-3-5 10:17:57 | 只看該作者
如果要完全量身定做的,還得自己寫(xiě).
不過(guò),怎么都是用微軟的
回復(fù)

使用道具 舉報(bào)

點(diǎn)擊這里給我發(fā)消息

13#
 樓主| 發(fā)表于 2008-3-5 15:54:15 | 只看該作者
不錯(cuò)不錯(cuò),更具體了!!
回復(fù)

使用道具 舉報(bào)

14#
發(fā)表于 2008-3-6 15:18:43 | 只看該作者
我也做了一個(gè),并不算很完善,湊合先發(fā)上來(lái)
按要求是做一個(gè)調(diào)用最方便的對(duì)話(huà)框,首先想到的是把常用的類(lèi)型先定義起來(lái),同時(shí)也能支持自定義模式
  1. Public Enum DialogType '定義對(duì)話(huà)框類(lèi)型
  2. Fileopen = 1
  3. FileSaveAs = 2
  4. FilePicker = 3
  5. FolderPicker = 4
  6. End Enum

  7. Public Enum FilterType '定義篩選類(lèi)型
  8. All = 0 '所有文件
  9. MsAccess = 1
  10. MsWord = 2
  11. MsExcel = 3
  12. Txt = 4
  13. HTML = 5
  14. Photo = 6
  15. Cust = 7 '自定義類(lèi)型
  16. End Enum

  17. Public Const MsAllType As String = "*.*"
  18. Public Const MsALLTitle As String = "所有文件"
  19. Public Const MsAccessType As String = "*.mdb;*.adp;*.mda;*.mde;*.ade"
  20. Public Const MsAccessTitle As String = "Microsoft Office Access"
  21. Public Const HtmType As String = "*.html;*.htm;*.hta;*.asp"
  22. Public Const HtmTitle As String = "網(wǎng)頁(yè)"
  23. Public Const TxtType As String = "*.txt"
  24. Public Const TxtTitle As String = "文本文檔"
  25. Public Const MsExcelType As String = "*.xl;*.xls;*.xla;*.xlm;*.xlc;*.xlw"
  26. Public Const MsExcelTitle As String = "Microsoft Office Excel"
  27. Public Const MsWordType As String = "*.doc;*.dot"
  28. Public Const MsWordTitle As String = "Microsoft Office Word"
  29. Public Const PhotoType As String = "*.JPG;*.JPEG;*.JPE;*.JFIF;*.GIF;*.bmp,*.PNG,*.ico"
  30. Public Const PhotoTitle As String = "圖片文件"


  31. Public Function GetFileName(DType As DialogType, txtFilter As FilterType, Optional txtFilterName As String, Optional ByVal strPath, Optional StrTitle As String) As String

  32. '須引用 Micosoft Office 11.0 Object Library

  33. '用途: 自定義對(duì)話(huà)框
  34. '參數(shù): DType 定義對(duì)話(huà)框類(lèi)型 必選: Fileopen 打開(kāi) 對(duì)話(huà)框;FileSaveAs 另存為 對(duì)話(huà)框;FilePicker 文件選取器 對(duì)話(huà)框;FolderPicker 文件夾選取器 對(duì)話(huà)框
  35. ' txtFilter 定義幾種常用類(lèi)型 支持自定義類(lèi)型 必選;
  36. ' txtFilterName 可選,當(dāng)txtFilter類(lèi)型為Cust自定義,則txtFilterName表示自定義的篩選條件和名稱(chēng),篩選條件和篩選名稱(chēng)用","分隔:亦表示保存的文件名
  37. ' strPath 文件路徑 可選
  38. ' StrTitle 自定義對(duì)話(huà)框名稱(chēng),可選;缺省為系統(tǒng)自帶的
  39. '用法: GetFileName Fileopen, MsAccess
  40. ' GetFileName FileSaveAs, MsExcel, "Tes.xls"
  41. ' GetFileName Fileopen, Cust, "*.doc;*.xls;*.mdb"
  42. ' GetFileName Fileopen, Cust, "*.doc;*.xls;*.mdb,My Dialog"
  43. ' GetFileName Fileopen, Cust, "*.doc;*.xls;*.mdb,My Dialog", , "自定義標(biāo)題"
  44. ' GetFileName Fileopen, MsAccess, , , "自定義標(biāo)題"
  45. ' GetFileName Fileopen, Photo, , "D:"



  46. Dim StrFilter As String
  47. Dim StrFilterTitle As String
  48. Dim fDialog As Office.FileDialog


  49. Select Case txtFilter

  50. Case All

  51. StrFilter = MsAllType
  52. StrFilterTitle = MsALLTitle

  53. Case MsAccess

  54. StrFilter = MsAccessType
  55. StrFilterTitle = MsAccessTitle

  56. Case MsWord

  57. StrFilter = MsWordType
  58. StrFilterTitle = MsWordTitle

  59. Case MsExcel

  60. StrFilter = MsExcelType
  61. StrFilterTitle = MsExcelTitle

  62. Case Txt

  63. StrFilter = TxtType
  64. StrFilterTitle = TxtTitle

  65. Case HTML

  66. StrFilter = HtmType
  67. StrFilterTitle = HtmTitle

  68. Case Photo

  69. StrFilter = PhotoType
  70. StrFilterTitle = PhotoTitle

  71. Case Cust

  72. Dim Mypos

  73. If IsMissing(txtFilterName) Then

  74. MsgBox "你選擇了自定義類(lèi)型,請(qǐng)?jiān)趖xtFilterName選項(xiàng)中填寫(xiě)篩選數(shù)據(jù)"

  75. Exit Function
  76. Else

  77. Mypos = InStr(1, txtFilterName, ",")


  78. If Mypos > 0 Then

  79. StrFilter = Mid(txtFilterName, 1, Mypos - 1)
  80. StrFilterTitle = Mid(txtFilterName, Mypos + 1, Len(txtFilterName) - Mypos)
  81. Else
  82. StrFilter = txtFilterName
  83. StrFilterTitle = "自定義類(lèi)型"

  84. End If

  85. End If

  86. End Select

  87. Set fDialog = Application.FileDialog(DType)

  88. With fDialog

  89. .AllowMultiSelect = False

  90. If IsMissing(strPath) Then
  91. .InitialFileName = CurrentProject.Path
  92. Else
  93. .InitialFileName = strPath
  94. End If

  95. If Not IsMissing(StrTitle) Then
  96. .Title = StrTitle
  97. End If


  98. If DType <> FileSaveAs Then

  99. .Filters.Clear
  100. .Filters.Add StrFilterTitle, StrFilter

  101. Else

  102. .InitialFileName = txtFilterName
  103. End If

  104. .Show
  105. End With

  106. If fDialog.SelectedItems.Count > 0 Then

  107. GetFileName = fDialog.SelectedItems(1)

  108. Else

  109. GetFileName = ""

  110. End If

  111. Set fDialog = Nothing


  112. End Function
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

15#
發(fā)表于 2008-3-6 16:27:07 | 只看該作者
這么多代碼,學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

16#
發(fā)表于 2008-3-6 16:33:36 | 只看該作者
呵呵, 這個(gè)還沒(méi)考慮多選的問(wèn)題呢
回復(fù)

使用道具 舉報(bào)

點(diǎn)擊這里給我發(fā)消息

17#
 樓主| 發(fā)表于 2008-3-7 11:16:01 | 只看該作者
原帖由 andymark 于 2008-3-6 16:33 發(fā)表
呵呵, 這個(gè)還沒(méi)考慮多選的問(wèn)題呢

一考慮多選,代碼又多了
回復(fù)

使用道具 舉報(bào)

18#
發(fā)表于 2008-3-8 16:13:21 | 只看該作者
不用先期綁定的方式,可以不引用Micosoft Office 1X.0 Object Library
回復(fù)

使用道具 舉報(bào)

19#
發(fā)表于 2008-3-8 16:16:32 | 只看該作者
andymark:
其實(shí)可以不用定義:Public Enum DialogType '定義對(duì)話(huà)框類(lèi)型,因?yàn)橐昧薓icosoft Office 1X.0 Object Library后是可以使用枚舉:MsoFileDialogType
回復(fù)

使用道具 舉報(bào)

20#
發(fā)表于 2008-3-8 16:26:23 | 只看該作者
這個(gè)我知道,微軟那個(gè)東東有點(diǎn)長(zhǎng)
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2024-10-23 06:25 , Processed in 0.086070 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表