動態建立控制元件的方法
使 用 控 制 元 件 時 , 常 見 的 問 題 是 : 「 如 何 動 態 地 建 立 控 制 元 件 ? 」 , 例 如 表 單 上 一 開 始 沒 有 控 制 元 件 或 只 有 少 數 的 控 制 元 件 , 而 程 式 希 望 隨 著 執 行 時 的 狀 況 動 態 地 建 立 所 需 之 控 制 元 件 。 如 果 使 用 一 般 建 立 物 件 的 敘 述 , 可 能 有 人 會 撰 寫 以 下 敘 述 :
Dim X As Object
Set X = New TextBox ' 建 立 TextBox 控 制 元 件
但 實 際 上 是 行 不 通 的 , 為 什 麼 ? 因 為 控 制 元 件 是 表 單 的 子 物 件 , 而 利 用 「 Set 物 件 變 數 = New 物 件 類 別 名 」 所 建 立 的 物 件 則 屬 於 「 程 式 」 所 管 轄 , 而 VB 並 不 允 許 我 們 建 立 附 屬 於 「 程 式 」 的 控 制 元 件 , 因 此 以 上 敘 述 會 產 生 錯 誤 , 但 怎 樣 在 表 單 上 面 動 態 地 建 立 控 制 元 件 呢 ?
以 TextBox 控 制 元 件 的 建 立 為 例 , 至 少 必 須 在 表 單 上 先 佈 置 一 個 TextBox 控 制 元 件 , 並 且 設 定 它 的 Index 屬 性 , 然 後 使 用 Load 敘 述 建 立 控 制 元 件 : (假 設 此 一 TextBox 名 稱 為 Text1, 而 Index 屬 性 設 定 為 0 )
Load Text1(I) ' I 可 以 是 0 以 外 的 正 整 數
Text1(I).Visible = True ' 將 Text1(I) 顯 示 出 來
' 此 外 , 可 能 還 需 要 設 定 Left、 Top 屬 性 以 決 定 座 標 位 置
而 相 對 的 , 破 壞 Text1 陣 列 中 的 某 一 個 控 制 元 件 的 方 法 則 是 :
Unload Text1(I)
以 上 被 破 壞 之 控 制 元 件 必 須 是 利 用 程 式 建 立 出 來 的 Text1(I), 假 設 Text1(0) 是 設 計 階 段 就 已 經 佈 置 在 表 單 上 面 的 控 制 元 件 , 則 「 Unload Text1(0)」 將 會 產 生 錯 誤 。