1

我有一个 VB 6 插件,它将所有项目添加到一个项目组中,遍历这些项目的每个组件,如果找到一个表单或用户控件,则更改其属性。

属性由用户定义。如果用户想要更改所有表单或用户控件的高度,则代码片段如下

Private Sub Update_ButtonClick()
  '..declaring all the variables here

  ' VBInstance is initialized to VBIDE.VBE when the add-in is loaded

  For Index = 1 To projCount
    compoCount = VBInstance.VBProjects(Index).VBComponents.Count
    For jIndex = 1 To compoCount

      csFileName = VBInstance.VBProjects(Index).VBComponents(jIndex).name
      componentType = VBInstance.VBProjects(Index).VBComponents(jIndex).Type

      If componentType = VBIDE.vbext_ct_VBForm Or componentType = VBIDE.vbext_ct_UserControl Then '.frm or .ctl         
        VBInstance.VBProjects(Index).VBComponents(jIndex).Properties(propChange).Value = propvalue 'changing the property
        VBInstance.VBProjects(Index).VBComponents(jIndex).SaveAs csFileName 'Saving the file
      End If
    Next jIndex
  Next Index
End Sub

每当我将属性名称命名为Font时,我都会收到错误消息

运行时错误“425”无效对象使用

我已经PropertyBag.WritePropertyhttp://visualbasic.freetutes.com/learn-vb6-advanced/lesson13/p20.html尝试过,但它不符合我的目的。

有没有办法设置Font控件或表单的属性?

当我在记事本中打开 ctl 或表单时,我无法在其中找到该Font属性,因此我无法在此处使用文本替换。

任何人都可以帮忙吗?

更新代码:


Private Sub Update_ButtonClick()
    Dim fobject As New StdFont
    fobject.Name = "Arial"
    Set propvalue = fobject
    For Index = 1 To projCount
     compoCount = VBInstance.VBProjects(Index).VBComponents.Count
     For jIndex = 1 To compoCount
      csFileName = VBInstance.VBProjects(Index).VBComponents(jIndex).Name
      componentType = VBInstance.VBProjects(Index).VBComponents(jIndex).Type
      If componentType = 5 Or componentType = 8 Then 
       VBInstance.VBProjects(Index).VBComponents(jIndex).Properties("Font").Value=  propvalue
      VBInstance.VBProjects(Index).VBComponents(jIndex).SaveAs csFileName 
      End If
       Next jIndex
     Next Index 
End Sub

我得到的错误是

Run-time error '425':
Invalid object use
4

1 回答 1

5

属性是一个对象,而Font不是简单的内在价值。您需要使用Set分配StdFontpropvalue.

或者,您可以对字体进行特殊处理,只需将属性的.Name属性设置为所需的字体名称。

于 2013-01-04T10:16:08.480 回答