在vb6中替换表单控件

时间:2011-11-21 04:45:09

标签: vb6 controls

我们有一个内部按钮控制,坦白说它很糟糕。我想替换它,但我不想在我们的项目中使用每个表单并删除/添加新控件。在我看来,如果我设计一个新的按钮,它具有与旧的相同的属性,那么我应该能够给它与旧的相同的名称,只需将vbp文件中的所有参考行替换为点对新的控制。

有没有人试过这个(更好的是你听说过一个可以为你做的工具),如果是这样的话,我应该注意什么?'/ p>

谢谢!

3 个答案:

答案 0 :(得分:7)

* .vbp文件是您需要更改的地方。在包含GUI的文件中也引用了所使用的控件库 - 即形式(* .frm),控件(* .ctl)和属性页(* .pag)文件。这些文件采用纯文本格式,您可以在顶部看到引用。它们看起来像这样:

Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomctl.ocx"

如果新控件是编译的OCX,则需要在所有相关文件中添加或更新这些引用。如果它在同一个项目中我不认为它需要任何参考,如果它在同一个项目组中的另一个项目中,我不确定。使用新控件保存测试表单以查看。

请注意,您不必保留相同的控件类名称。在* .frm / ctl / pag文件中,它们各个控件的实例用这样的简单格式表示:

Begin VB.CommandButton Command2 
   Caption         =   "Cancel"
   Height          =   375
   Left            =   2460
   TabIndex        =   1
   Top             =   2400
   Width           =   1455
End

第一行的语法是“Begin LibraryOrProjectName.ClassName NameOfThisInstance”。因此,如果违规控件的名称与众不同,那么它应该很容易搜索并且在BASIC源和GUI布局中替换对它的引用。您可能需要一个纯文本编辑器,可以跨多个文件执行搜索和替换(Notepad ++是一个)。

某些控件属性存储如下:

   Picture         =   "frmMain.frx":292F

这些文件对应于* .frx,* .ctx和* .pgx文件,这些文件包含某些控件属性值的二进制数据。我不认为这些文件需要改变或导致任何问题。它们似乎不包含控件名称。

使用完整编译(Ctrl + F5)以确保之后没有任何问题留在源部分。

从未尝试过。祝你好运。

答案 1 :(得分:1)

只有一个提示可以添加到接受的答案中。

如果您需要用第三方或自定义ActiveX控件替换任何通用 VB控件,则必须替换:

BeginProperty Font

BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}

在尝试编辑/打开表单时,忽略运行时错误713 会导致这样做。

如果块中没有BeginProperty语句,则控件使用默认字体,不需要替换。

答案 2 :(得分:0)

要查找的另一种情况是OCX中的类是否直接在代码中引用。

换句话说,如果控件类为ABCButton,则还需要在所有ABCButton.BAS文件中查找.CLS,并进行适当的更改。