什么是控件數(shù)組控件數(shù)組的概述(2)
什么是控件數(shù)組控件數(shù)組的概述
刪除對象
運(yùn)行時可以使用Unload函數(shù)刪除控件數(shù)組中運(yùn)行時創(chuàng)建的控件,但設(shè)計(jì)時創(chuàng)建的控件不能刪除。如:
UnloadCommand(1)
Unload函數(shù)語法與Load函數(shù)語法相似。
屬性概述
每個控件數(shù)組本身都有4個屬性,這4個屬性都是設(shè)計(jì)時無效、運(yùn)行時只讀的;而一個單獨(dú)的控件還有和控件數(shù)組相關(guān)的Index屬性。
Count屬性
Object.Count As Long
返回控件數(shù)組中的元素個數(shù)。
Item屬性
Object.Item (IndexAs Integer) As Object
返回控件數(shù)組中指定下標(biāo)的控件,相當(dāng)于Object(IndexAs Integer) As Object。
LBound和UBound屬性
Object.LBound As Integer
Object.UBound As Integer
返回控件數(shù)組中下標(biāo)的最小值(LBound)或最大值(UBound)。
Index屬性
Object.Index As Integer
(0≤Object.Index≤32767)
這個屬性應(yīng)用于控件數(shù)組中的一個控件,作用是返回或設(shè)計(jì)時設(shè)置控件在其控件數(shù)組中的下標(biāo),僅當(dāng)Object屬于某一控件數(shù)組時有效。
示例
已有一個名為“Commands”的Command控件數(shù)組,其中有一大小為900緹×450緹的Commands(0)控件。運(yùn)行時單擊Commands(0),則向控件數(shù)組中添加一個新控件并顯示在前一個控件下方75緹處,Caption屬性為其Index屬性值;單擊其他控件時,則從控件數(shù)組中刪除該控件。
PrivateSubCommands_Click(IndexAsInteger)WithCommandsIfIndex=0ThenIf.UBound=32767ThenExitSubLoad.Item(.UBound+1).Item(.UBound).Caption=.UBound.Item(.UBound).Top=(75+450)*.UBound+75.Item(.UBound).Visible=TrueElseUnload.Item(Index)EndIfEndWithEndSub
這里用到了With語句,在With ... End With語句塊中可以省略“Commands”標(biāo)識符而直接引用其屬性。
控件數(shù)組的優(yōu)點(diǎn)
一方面,使用控件數(shù)組所占用的資源比單獨(dú)添加每個控件所占用的資源更少,另一方面,因?yàn)榭丶?shù)組的事件可以共享,如果要使多個同類型控件在一個事件中執(zhí)行相同或類似的代碼,使用控件數(shù)組比單獨(dú)創(chuàng)建多個控件更方便,代碼也更容易維護(hù)。
例如,在一個窗體中有若干個Command控件,顯示的內(nèi)容是從1開始編號,要讓用戶單擊某按鈕時,彈出一個窗口顯示其編號的平方,若不使用控件數(shù)組,則要為Command1、Command2、……、Command10控件一一添加Click事件的代碼;如果日后要調(diào)整顯示內(nèi)容,則要一一修改每個控件的代碼,非常繁瑣。而控件數(shù)組就能用類似下面的代碼很好地解決這個問題:
PrivateSubCommands1_Click(IndexAsInteger)
MsgBoxIndex^2
EndSub
看過“控件數(shù)組的概述”的人還看了: