Properties 从属性数据库中设置属性值

Properties 从属性数据库中设置属性值,properties,vb6,controls,Properties,Vb6,Controls,我的数据库存储了formname、control和control属性类型值 我想要一行这样的代码 Forms(i%).Controls(ControlName$)).controlpropertytype$ = NewValue 我目前正在使用select case结构来处理各种属性类型。用一条语句来处理它会简单得多 使用helper函数,只需一行代码即可实现这一点。下面是将Form1上的文本框设置为值“aaa”的示例: Option Explicit Private Sub Test()

我的数据库存储了formname、control和control属性类型值

我想要一行这样的代码

Forms(i%).Controls(ControlName$)).controlpropertytype$ = NewValue

我目前正在使用select case结构来处理各种属性类型。用一条语句来处理它会简单得多

使用helper函数,只需一行代码即可实现这一点。下面是将Form1上的文本框设置为值“aaa”的示例:

Option Explicit

Private Sub Test()
   CallByName FindForm("Form1").Controls("Text1"), "Text", VbLet, "aaa"
End Sub

Public Function FindForm(ByVal Name As String) As Form
   Dim f As Form

   For Each f In Forms
      If UCase(f.Name) = UCase(Name) Then
         Set FindForm = f
         Exit Function
      End If
   Next
End Function
虽然这是一个有趣的练习,但我不推荐这种方法。它假定窗体和控件都可以找到,但如果找不到,这一行程序将使你的应用程序崩溃


下面是。

使用helper函数,只需一行代码即可实现这一点。下面是将Form1上的文本框设置为值“aaa”的示例:

Option Explicit

Private Sub Test()
   CallByName FindForm("Form1").Controls("Text1"), "Text", VbLet, "aaa"
End Sub

Public Function FindForm(ByVal Name As String) As Form
   Dim f As Form

   For Each f In Forms
      If UCase(f.Name) = UCase(Name) Then
         Set FindForm = f
         Exit Function
      End If
   Next
End Function
虽然这是一个有趣的练习,但我不推荐这种方法。它假定窗体和控件都可以找到,但如果找不到,这一行程序将使你的应用程序崩溃


这是。

你不能一行完成。Forms集合将只接受一个索引,而不是您想要的字符串。不过,您可以使用一个helper函数在一行中完成这项工作。这里有一个鲜为人知的VB6/VBA命令。不过,您仍然需要一个(多行)函数来创建生成的一行。但它应该比选择案例结构更灵活,不能一行完成。Forms集合将只接受一个索引,而不是您想要的字符串。不过,您可以使用一个helper函数在一行中完成这项工作。这里有一个鲜为人知的VB6/VBA命令。不过,您仍然需要一个(多行)函数来创建生成的一行。但它应该比selectcase构造更灵活。