例如:
在工程中有两个窗体,名称分别为frmCustomer和frmSupplier,在代码中根据不同的条件分别引用某一个窗体可以用:
dim F as Form
Select Case ....
    Case 条件1
      set F = frmCustomer
    Case 条件2
      set F = frmSupplier
End Select
这样写的缺陷是frmCustomer和frmSupplier必须是窗体对象,无法存放在数据库中。
现在想通过把窗体名(字符型)存入数据库,然后其名称来引用窗体,该怎样写呢?
类似于:set F = Forms("frmCustomer")
谢谢。

解决方案 »

  1.   

    CallByName 函数执行一个对象的方法,或者设置或返回一个对象的属性。语法CallByName(object, procedurename, calltype,[arguments()])CallByName 函数的语法有以下部分:部分 描述 
    object 必需的;变体型(对象)。函数将要执行的对象的名称。 
    procedurename 必需的;变体型(字符串)。一个包含该对象的属性名称或者方法名称的字符串表达式。 
    calltype 必需的;常数。一个 vbCallType 类型的常数,代表正在被调用的过程的类型。 
    arguments() 可选的:变体型(数组)。 
    说明CallByName 函数用于获取或者设置一个属性,或者在运行时使用一个字符串名称来调用一个方法。在下面的例子中,第一行使用 CallByName 来设置一个文本框的 MousePointer 属性,第二行得到 MousePointer 属性的值,第三行调用 Move 方法来移动文本框:CallByName Text1, "MousePointer", vbLet, vbCrosshair
    Result = CallByName (Text1, "MousePointer", vbGet)
    CallByName Text1, "Move", vbMethod, 100, 100
      

  2.   

    看看这个api对你有用没有Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long
    好条件已经充足,下面就看我我们怎么使用了.Public Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
       ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
    End Function使用时这样调用一下,Private Sub Command1_Click()
        Dim res As Boolean
        res = ExecuteLine(Text1.Text)
    End Sub在Text1中输入一个例句如:MsgBox "^_^,这是一句VB语句",,"OK"
      

  3.   

    CallByName函数是返回对象的属性,不能返回对象本身。
      

  4.   

    一个VB6的对象序列化的代码,可以将对象转换为XML再转换回来。
      

  5.   

    to: strongfisher(Haiwolf)
    你的方法也不能返回对象本身啊。
      

  6.   

    to:TechnoFantasy(www.applevb.com) 
    可以举个例子吗?谢谢。