【问题标题】:Extract properties of a control in VB 6( .ctl file )在 VB 6 中提取控件的属性(.ctl 文件)
【发布时间】:2017-06-15 03:28:40
【问题描述】:

我有一个 VB 6 控制文件(例如 ctl)文件,我的要求是在运行时更改此文件的属性...基本上是一些批量操作...(更改所有 ctl 文件的属性)

这个 ctl 文件是项目的一部分..

是否可以更改属性,例如 height = 100 width = 200 background = white font = calibri

通过代码,例如使用批处理文件或 c# 或 vb ??...有可用的工具吗??

【问题讨论】:

  • 人家还在写VB6?为什么?
  • @lightness 因为他们有数百万行的 VB6 并且没有明显的升级路线到更现代的平台,这就是原因。 stackoverflow.com/questions/400479/…
  • @MarkJ:当存在互操作时,为什么要故意添加到这些行?

标签: vb6 controls


【解决方案1】:

ctl 文件仅存在于您的开发环境中。一旦编译到您的应用程序中,它们就会成为编译输出的一部分,您将只能修改根据控制文件中定义的规则实例化的对象的属性。

如果每个控件都将高度、宽度和背景字体作为属性公开,那么您将能够在运行时以您希望的方式操作这些控件。如果您有一个希望以这种方式操作的控制对象列表,您可以创建它们的列表并遍历它们。

【讨论】:

    【解决方案2】:

    我正在使用custom VB6 IDE Add-In 来获取对 VBIDE.VBE 的引用。然后在即时窗口或公共函数中,所有已加载项目中的所有模块都可以使用代码进行操作。

    注册GetVBERef.dll,在VB6 IDE中加载Get VBE Reference插件,从压缩包中打开Project2.vbp并在即时窗口中输入:

    For Each oCmp In VBERef.ActiveVBProject.VBComponents: ? oCmp.Name: Next
    

    (你会得到Module2 只是因为Project2 中没有更多内容)

    您可以从Module2 复制/粘贴代码到您的项目中,并添加对Microsoft Visual Basic 6.0 Extensibility 的引用。通过一些试验和错误,您可以编写一个公共函数(例如在同一模块中),调整所有用户控件的大小或设置项目组中所有表单的颜色、字体等。

    【讨论】:

    • 感谢示例 Addin wqw,我正在寻找当前项目/模块中不应该存在的东西。第三方(最好是 c#)应用程序将打开所有 vb 项目,获取控制文件(.ctl),然后处理它们的属性,然后关闭 vb 项目......我猜我需要重写 GetVBRef.dll在 C# 中...然后将其包含在另一个可以在 VB 项目上工作的 C# 应用程序中...是否可以通过仅包含 Microsoft Visual Basic 6.0 Extensibility 来做到这一点???
    • 您无需更改现有项目。只需创建一个项目组,包括您的项目和一个特殊的“仅设计时”项目(示例中的Project2),该项目实现VBERef 和一个将处理项目中用户控件的公共函数。在设计时从即时窗口调用此函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多