程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB中實現同一窗口的多個實例及控件的動態增減

VB中實現同一窗口的多個實例及控件的動態增減

編輯:VB綜合教程
----在我編制的一個控制系統中,需要對不同模塊的不同狀態設置相應參數.由於設置的參數名稱都一樣,只是具體內容不同,我不再象往常一樣創建不同的窗口,擺放相同的部件,編制幾乎相同的代碼,而使用了窗體實例.其實現過程大致如下:
  
  新建一個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中運行通過.->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved