----在我編制的一個控制系統中,需要對不同模塊的不同狀態設置相應參數.由於設置的參數名稱都一樣,只是具體內容不同,我不再象往常一樣創建不同的窗口,擺放相同的部件,編制幾乎相同的代碼,而使用了窗體實例.其實現過程大致如下:
新建一個Form(我使用的是MDIForm,用一般的form也一樣,我試過),取名為form1,再建一個窗口取名為form2;
為form1建立菜單項(使用按鈕也行):
菜單項:OpenWindow,
子菜單項:open1、open2、open3,子菜單項設為控件數組,名稱取為mnuOpen,索引分別為0、1、2;
為菜單mnuOpen編寫代碼:
PrivateSubmnuOpen_Click(IndexAsInteger)
DimmyFormAsForm'定義變量
ForEachmyFormInForms'使用Forms集合
IfmyForm.Caption="Window"&CStr(Index 1)Then
'通過查看窗口標題檢查該窗口實例是否已打開
myform.windowstate=0'照原來的尺寸大小和位置打開
myForm.SetFocus'如果已打開,則使其獲得焦點
SetmyForm=Nothing'釋放資源
ExitSub'跳出過程
EndIf
Next
SetmyForm=NewForm2'創建Form2的窗體實例
LoadmyForm
myForm.Caption="Window"&CStr(Index 1)
'設置其Caption屬性,也可作其他操作
myForm.Show
SetmyForm=Nothing
EndSub
----在我的控制系統中,也用到了控件的動態增減,下面談談實現方法.
----假設根據一TextBox(名稱為Text1)的內容來決定某Label[名稱為Label1(0),定為控件數組,索引值Index為0]控件的數目.在Form中放置一個TextBox控件和一個Label控件,取名如前所述;再放置一個命令按鈕Command1.在Command1中編程:
PrivateSubCommand1_Click()
IfIsNumeric(Text1.Text)=FalseThenExitSub
'如果Text1中內容不是數字則退出過程
DimiCountAsInteger,iAsInteger
'iCount為設定的個數,i為計數器
DimiIndexAsInteger
'iIndex為實際個數
iCount=CInt(Text1.Text)
IfiCount>0AndiCount<10Then
'假定最多只能放10個Label1
iIndex=Label1.Count'當前Label1的個數
IfiCount>iIndexThen
'設定值大於實際值則增加相應數目的控件
Fori=iIndexToiCount-1
LoadLabel1(i)
WithLabel1(i)
.Left=Label1(0).Left
.Top=Label1(i-1).Top 350
.Visible=True
EndWith
Nexti
ElseIfiCount<iIndexThen
'設定值小於實際值則刪除多余的控件
Fori=iCountToiIndex-1
UnloadLabel1(i)
Nexti
EndIf
EndIf
EndSub
----上面的代碼在VB5.0和VB6.0中運行通過.->