類模塊基礎

来源:http://www.cnblogs.com/zpfbuaa/archive/2016/08/09/5753142.html
-Advertisement-
Play Games

附帶東野圭吾小說集(txt文件)http://pan.baidu.com/s/1slMSFxj 類模塊有多種用途,主要用於以下幾個方面: 1.封裝相似功能到單個對象中 2.建立帶有屬性、方法和事件的對象 3.特為自定義集合建立類模塊 封裝相似功能: 以一個名為clsUStationDialog的類開 ...


附帶東野圭吾小說集(txt文件)http://pan.baidu.com/s/1slMSFxj

類模塊有多種用途,主要用於以下幾個方面:

1.封裝相似功能到單個對象中

2.建立帶有屬性、方法和事件的對象

3.特為自定義集合建立類模塊

封裝相似功能:

以一個名為clsUStationDialog的類開始。

使用這個類能做些什麼:

顯示打開MicroStation DGN文件的FileOpen對話框

顯示打開Microsoft Excel文件的FileOpen對話框

顯示打開ASCII.txt文件的FileOpen對話框

顯示打開用戶指定擴展名的FileOpen對話框

文件名需要的屬性

僅路徑需要的屬性

路徑/文件名需要的屬性

Private Declare Function mdlDialog_fileOpen Lib "stdmdlbltin.dll" (ByVal _

fileName As String, ByVal rFileH As Long, ByVal _

resourceId As Long, ByVal suggestedFileName As String, _

ByVal filterString As String, ByVal defaultDirectory As String, _

ByVal titleString As String) As Long

Private Declare Function mdlDialog_fileCreate Lib _

"stdmdlbltin.dll" (ByVal _

fileName As String, ByVal rFileH As Long, _

ByVal resourceId As Long, _

ByVal suggestedFileName As String, _

ByVal filterString As String, _

ByVal defaultDirectory As String, _

ByVal titleString As String) As Long

Private pFilePath As String

Private pFileName As String

Private pDefFilePath As String

Private pDefFileName As String

Private pFileNameSelected As String

Private pRetVal As Long

Private pFileExts() As String

Property Get SelectedPath() As String

SelectedPath = pFilePath

End Property

Property Get SelectedFile() As String

SelectedFile = pFileName

End Property

Property Get OpenSuccess() As Boolean

Select Case pRetVal

Case 1 '取消

OpenSuccess = False

Case 0 '打開

OpenSuccess = True

End Select

End Property

Sub OpenDialog()

Dim tmpFilter As String

pRetVal = 1

tmpFilter = "*." & Join(GetExts, "; *.")

pFileNameSelected = Space(255)

pRetVal = mdlDialog_fileOpen(pFileNameSelected, 0, 0, _

pDefFileName, tmpFilter, pDefFilePath, "Open File")

Select Case pRetVal

Case 1 '取消

Case 0 '打開

Dim tmpFile As String

Dim xSplit As Variant

tmpFile = Left(pFileNameSelected, InStr(1, _

pFileNameSelected, Chr(0)) - 1)

xSplit = Split(tmpFile, "\")

pFileName = xSplit(UBound(xSplit))

xSplit(UBound(xSplit)) = ""

pFilePath = Join(xSplit, "\")

End Select

End Sub

Property Get DefaultFile() As String

DefaultFile = pDefFileName

End Property

Property Let DefaultFile(strFilIn As String)

pDefFileName = strFileIn

End Property

Property Get DefaultPath() As String

DefaultPath = pDefFilePath

End Property

Property Let DefaultPath(strPathIN As String)

On Error GoTo errhnd

If Dir(strPathIN, vbDirectory) <> "" Then

pDefFilePath = strPathIN

End If

Exit Property

errhnd:

Select Case Err.Number

Case 52 '錯誤文件名或文件號

Err.Clear

End Select

End Property

Property Get ExtCount() As Long

ExtCount = UBound(pFileExts)

End Property

Property Get GetExts() As String()

If UBound(pFileExts) = 0 Then

Exit Property

End If

Dim tmpGetExts() As String

ReDim tmpGetExts(UBound(pFileExts) - 1) As String

Dim I As Long

For I = 1 To UBound(pFileExts)

tmpGetExts(I - 1) = pFileExts(I)

Next I

GetExts = tmpGetExts

End Property

Private Sub Class_Initialize()

ReDim pFileExts(0)

End Sub

Public Sub AddFileExt(FileExt As String)

Dim I As Long

Dim tmpFileExt As String

tmpFileExt = LCase(Replace(FileExt, ".", ""))

For I = 1 To UBound(pFileExts)

If tmpFileExt = pFileExts(I) Then

Exit Sub

End If

Next I

ReDim Preserve pFileExts(UBound(pFileExts) + 1)

pFileExts(UBound(pFileExts)) = tmpFileExt

End Sub

Sub CreateDialog()

Dim tmpFilter As String

pRetVal = 1

tmpFilter = "*." & Join(GetExts, "; *.")

pFileNameSelected = Space(255)

pRetVal = mdlDialog_fileCreate(pFileNameSelected, 0, 0, _

pDefFileName, tmpFilter, pDefFilePath, "Create File")

Select Case pRetVal

Case 1 '取消

Case 0 '打開

Dim tmpFile As String

Dim xSplit As Variant

tmpFile = Left(pFileNameSelected, InStr(1, _

pFileNameSelected, Chr(0) - 1))

xSplit = Split(tmpFile, "\")

pFileName = xSplit(UBound(xSplit))

xSplit(UBound(xSplit)) = ""

pFliePath = Join(xSplit, "\")

End Select

End Sub

 

測試代碼1:

Sub TestShowDialogA()

Dim MyUSD As New clsUSataionDialog

MyUSD.AddFileExt "dgn"

MyUSD.DefaultPath = "c:\"

MyUSD.DefaultFile = "temp.dgn"

MyUSD.OpenDialog

Select Case MyUSD.OpenSuccess

Case True

MsgBox MyUSD.SelectedPath & MyUSD.SelectedFile

End Select

End Sub

 

測試截圖:

clip_image001

測試代碼2:

Sub TestShowDialogB()

Dim MyUSD As New clsUSataionDialog

MyUSD.AddFileExt "dgn"

MyUSD.AddFileExt "dwg"

MyUSD.AddFileExt "dxf"

MyUSD.DefaultFile = "c:\MicroStation VBA"

MyUSD.DefaultFile = "test.dgn"

MyUSD.OpenDialog

Select Case MyUSD.OpenSuccess

Case True

MsgBox MyUSD.SelectedPath & MyUSD.SelectedFile

End Select

End Sub

 

測試截圖2:

clip_image002

測試代碼3:

Sub TestShowDialogC()

Dim MyUSD As New clsUSataionDialog

MyUSD.AddFileExt "dgn"

MyUSD.DefaultFile = "c:\"

MyUSD.DefaultFile = "test.dgn"

MyUSD.CreateDialog

Select Case MyUSD.OpenSuccess

Case True

MsgBox MyUSD.SelectedPath & MyUSD.SelectedFile

End Select

End Sub

 

測試截圖3:

clip_image003

測試代碼4:

Sub TestShowDialogD()

Dim MyUSD As New clsUSataionDialog

MyUSD.AddFileExt "ILoveyou"

MyUSD.AddFileExt " LOVEYOU"

MyUSD.AddFileExt "Forever"

MyUSD.DefaultPath = "c:\MicroStation VBA"

MyUSD.DefaultFile = "test.dgn"

MyUSD.CreateDialog

Select Case MyUSD.OpenSuccess

Case True

MsgBox MyUSD.SelectedPath & MyUSD.SelectedFile

End Select

End Sub

 

測試截圖4:

clip_image004

測試代碼5:

Sub TestShowDialogE()

Dim MyUSD As New clsUSataionDialog

MyUSD.AddFileExt "loveyou"

MyUSD.DefaultPath = "c:\"

MyUSD.DefaultFile = "test.dgn"

MyUSD.OpenDialog

Select Case MyUSD.OpenSuccess

Case True

MsgBox "Open " & MyUSD.SelectedPath & _

MyUSD.SelectedFile

Case False

If MsgBox("Create a new file?", vbYesNo) = vbYes Then

MyUSD.CreateDialog

If MyUSD.OpenSuccess = True Then

MsgBox "Create" & MyUSD.SelectedPath & _

MyUSD.SelectedFile

End If

End If

End Select

End Sub

 

測試截圖5:

clip_image005

 

 

image[3]


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在公司多人協作開發,相信好多程式員都遇到非常憂傷的問題,就是工程打不開,這樣就無從下手,好多程式怨只能再從代碼伺服器上下載一份新的代碼,今天軍哥教你幾個小技巧,讓你的bigger瞬間提升一個檔次 在公司經常遇到這種非常憂傷的問題 在公司經常遇到這種非常憂傷的問題 出現這種問題是因為多人開發中,同時修 ...
  • 虛擬機中的Linux系統克隆後,網卡配置eth0中的UUID可被克隆的系統是一樣的,這樣UUID就失去了唯一性。 我參考了該篇博客: 有時我們不小心將/etc/sysconfig/network-scripts /ifcfg-eth0(可以通過此文件進行查看UUID)刪除或者損壞,要重新編輯ifcf ...
  • 創建條件 第一種:源文件複製,目標文件不存在 可以複製,複製的目標文件的目錄必須存在(不然會報錯),複製後文件相同,表示覆制到目錄後將文件重命名 當目標文件的目錄(/dir)不存在時,會報錯 第二種:源文件複製,目標文件存在 可以複製,當有文件名相同表明覆蓋,會提示,查看文件內容,表明確實會覆蓋原文 ...
  • PIDSTAT NAME pidstat對linux任務的統計 語法 pidstat [ -C comm ] [ -d ] [ -h ] [ -I ] [ -l ] [ -p { pid [,...] | SELF | ALL } ] [ -r ] [ -t ] [ -T { TASK | CHIL ...
  • 說“血案”有寫誇張了,其實是也就熬了一夜的通宵,做運維的傷不起啊,作為一名運維工程師,像這種伺服器突發故障半夜起床的情況屬於家常便飯,見怪不怪了,開始說正事: 前幾天半夜12點左右,收到伺服器宕機的消息,然後用dell idrac 卡遠程,結果無法通過它正常開機,直接發郵件給機房,讓他們重置下idr ...
  • 文件壓縮、解壓 網路、進程 磁碟、文件使用情況 記憶體使用 1、文件壓縮、解壓 1)tar.gz文件解壓: 2)zip 文件解壓: 2、網路、進程 1)netstat 在Linux上通常使用的是: netstat –apn | grep pid 在Windows上,對應的命令是:netstat –an ...
  • 一、本實驗ADC 配置 解析度:10 位。 輸入通道:5,即使用輸入通道AIN5 檢測電位器的電壓。 ADC 基準電壓:1.2V。 二、NRF51822 ADC 管腳分佈 NRF51822 的ADC 共有8 個輸入通道,對應的管腳分佈入下圖: 三、NRF51822 ADC 原理 NRF51822 的 ...
  • (1)當vim打開一個文件的時候,可以使用 (2)對當前文件寫入: 按鍵i ,左下角會顯示insert單詞,代表可以進行文本的插入; (3)滑鼠上下左右的移動: 上:K ↑ 下:j ↓ 左:H ← 右:L → (4)換行及刪除 換行寫入: o 刪除一行 : dd 返回 u (5)保存及退出 ESC ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...