在模組(.bas)中引用表單上的控制項可能發生的問題

通常我們要引用一個表單上的控制項,必須指明是哪個表單。假設模組中有一個 "總和" 函數,其作用是將 Form1 上的 Text1 和 Text2 作總和:

Public Function sum1()
     sum1 = Val(Form1.Text1.Text) + Val(Form1.Text2.Text)
End Function

但是如果很多表單上都有 Text1 和 Text2 要作總和,以上程式就不適用,我們可考慮改成下面這個程式:

Public Function sum2()
     sum2 = Val(Screen.ActiveForm.Text1.Text) + Val(Screen.ActiveForm.Text2.Text)
End Function

但是如果有其他表單上要作總和的控制項,並不是 Text1 和 Text2,以上程式就不適用,我們可考慮改成下面這個程式:

Public Function sum3(ParamArray m())
     Dim i As Long
     For i = LBound(m) To UBound(m)
          sum3 = sum3 + Val(m(i))
     Next
End Function

如果任一表單上有三個 TextBox 要作總和,可以這樣呼叫:

MsgBox sum3(Text1, Text2, Text3)

如果有兩個 Label 要作總和,可以這樣呼叫:

MsgBox sum3(Label1, Label2)

如果有四個變數要作總和,還是可以這樣呼叫:

MsgBox sum3(a, b, c, d)

所以結論是:除非萬不得已,否則不要在模組中直接引用表單上的控制項,不然這樣的程式在封裝性和可移植性都很差,應該是把程序需要用到的資訊,以引數的型式傳入,而不是不傳入任何的引數,就在程序中任意引用表單上的控制項。

關於在 MDIForm 中引用表單上的控制項的資訊,請參閱 ActiveForm 的線上說明。

 


[ 上一個 | 首頁 | 重要觀念 | 下一個 ]

This page was written by Jaric on Jun. 20, 1998. All rights reserved.

Total pageview since 4/6/1999.