如何在VB6用户控件中实现高级自定义属性?

2024-02-13

抱歉,除了“高级自定义属性”之外,我不知道如何命名它。如果我知道,我会先搜索一下。

我正在使用第三方控件处理遗留代码。

在VB6中,当您将该控件拖到窗体上时,您可以在“属性”窗口中看到该控件支持的所有属性。比如MarginLeft、MarginRight等等。

那没问题。

在“属性”窗口中,最上面的属性一般是“(名称)”字段,它是控件的名称。

但是我正在使用的第三方控件在“(名称)”上方还有另外两个“假属性”,即“(关于)”和“(自定义)”。

当您点击“(关于)”时,将会出现一个显示公司信息的对话框。当您单击“(自定义)”时,将出现另一个对话框,显示更多属性。这些对话框在 VB6 中显示。

在“(自定义)”对话框中,可以修改普通属性(与直接在属性窗口中修改相同)。你可以做更多。还有更多属性不是普通属性(至少您在“属性”窗口中找不到任何内容)。

当您保存此表单时,对于普通属性,所有内容都将保存到 .FRM 文件中。例如。,

  Control1.MarginLeft = 5
  Control1.Text = "I am a control"

但是,对于在(自定义)对话框中编辑的“高级属性”,它们不会保存在.FRM 中,而是以二进制格式保存在.FRX 中。

例如,在(自定义)对话框中,您可以编辑一个名为“标题”的属性,其中包括该标题的文本、字体、粗细、显示样式以及许多与标题类似的属性。在 .FRM 中,它类似于,

   Control1.Caption = "frmForm1.frx":013F

标题的所有文本和相关属性都以二进制格式保存在 .FRX 文件中。

需要注意的是,普通的“属性”窗口中没有“Caption”属性,只能在“(自定义)”对话框中进行编辑。

我的问题如下,

  1. 如何实现这样一个可以在VB6中显示的(自定义)对话框?

  2. 如何让VB6的属性窗口显示(关于)和(自定义)?

  3. 如何告诉VB6 Caption属性不应显示在属性窗口中,但可以直接在代码中使用Control1.Caption = xxxx.frx:offset?

  4. 如何告诉VB6这个Caption属性应该保存在.FRX中,以及如何告诉VB6数据的大小,以便VB6可以自动管理偏移量?

  5. 如何通过VB6自动加载数据,以便在(自定义)对话框中显示正确的值?

  6. 据我所知,.frx 格式是秘密,有很多人在研究各种 .frx 用于标准控件,如二进制(图像)、列表和文本。我很好奇第 3 方控件如何利用 .frx,第 3 方控件是否应该定义自己的 .frx 格式?包括例如Length前面有多少字节(或者根本没有长度字段,它是固定长度),style1有多少字节,style2有多少字节等。

多谢。如果您知道这个“高级属性”的正确名称是什么,请告诉我名称,我可以自己搜索。

我尝试搜索高级属性,但没有真正得到我想知道的任何信息。


frx 文件适用于二进制或其他非基本数据类型。 frm 将存储简单的属性。您需要做的是挂钩 UserControl 事件 WriteProperties 和 ReadProperties。您不需要知道后备存储在哪里(frm 与 frx),您只需要访问 PropBag 即可读取和写入数据。

Google 是您查找文档的朋友:

https://msdn.microsoft.com/en-us/library/aa242140(v=vs.60).aspx https://msdn.microsoft.com/en-us/library/aa242140(v=vs.60).aspx

或有关该主题的其他信息:

祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在VB6用户控件中实现高级自定义属性? 的相关文章

  • 使用 pywin32com 进行 opc 的内存泄漏

    我很难弄清楚如何解决内存泄漏问题 我认为这可能是 pywin32 的问题 但我不完全确定 我用于读取 写入单个项目的代码似乎工作得很好 但是当使用组函数时 它会慢慢泄漏内存 我怀疑这是来自必须在 server handles 中传递的基于
  • python 的 win32com.client.dispatch() 无法识别注册的 COM 对象

    我正在尝试使用 Python 加载 COM 对象 我正在使用 win32com client Dispatch Name Of Object 加载它 并且 COM 对象已使用 regsvr32 注册 并在 HKLM CLSID 和 HKLM
  • 向用户显示多条验证消息

    在 MS Access 中 如何将从 SELECT 语句检索到的行存储在数组中 并在一个消息框中显示多行 Dim rSEL rSUM rDes As DAO Recordset Dim vItem id vQnty vSum As Inte
  • VB:在 Adob​​e Illustrator、Photoshop 中分配给布尔属性

    在使用 VBA 自动化 Adob e Illustrator CS3 时 我发现分配一个布尔变量 to a 布尔属性结果总是分配 False Dim New Path As Illustrator PathItem Dim v As Boo
  • UI 线程正在阻塞调用 COM 对象的后台线程

    我正在开发一个通过第三方 COM 库与外部设备通信的应用程序 我试图让与设备的所有通信都通过后台线程 以防止通信问题搞砸我的应用程序 并消除在 UI 线程中进行通信所引入的一些其他复杂性 问题是 每当发生导致主 UI 线程阻塞的情况 即调用
  • 从命令行编译 VB6

    有人知道如何从命令行编译 vb6 webclass dll 吗 我正在尝试构建一个用于自动版本构建的工具 但它失败并显示 文件 文件名 中的编译错误 第 xxxx 行 变量未定义 警报 已知错误 http support microsoft
  • CLSIDFromProgID 成功但 CreateInstace 失败!为什么?

    我正在尝试创建 COM 对象的实例 我有实现该接口的类名 并使用 CLSIDFromProgID 获取 CLSID 因此 自从我获得 CLSID 以来 我想从现在开始一切都会好起来的 但是 当我调用 CreateInstance 并传入 C
  • 具有多个图像列表和图标/图像的列表视图

    我需要一种在列表视图上使用两个图像列表的方法 其中一个图像列表用于包含 16x16 图标的标题图标 另一个图像列表将在子项目中包含 32x32 缩略图 下图显示了我正在尝试做什么 我找到了解决这个问题的技巧 诀窍是在 32x32 画布上创建
  • XE2 中的 COM 是否损坏?我该如何解决它?

    Update XE2 Update 2 修复了下述错误 下面的程序是从实际程序中截取的 在 XE2 中失败并出现异常 这是 2010 年的回归 我没有 XE 来测试 但我希望该程序在 XE 上运行良好 感谢 Primo 确认代码在 XE 上
  • Visual Basic 6.0 UML 图生成器

    有没有免费的 UML 图生成器可以将 VB6 源代码转换为 UML 图 您是否见过 Deanna 提到的内置 Visual Modelerhere https stackoverflow com questions 16912161 use
  • 使用 VS2012 中的 C++ 中的 ATL 创建 COM

    尝试在 Visual Studio 2012 中使用 ATL 创建简单的 COM 库 我愿意 New ATL Project Welcome to the ATL Project Wizard Next Application Settin
  • 将 HRESULT 转换为可读消息

    任何人都可以提供一些有关如何以编程方式翻译 HRESULT 的信息 http en wikipedia org wiki HRESULT http en wikipedia org wiki HRESULT 值到人类可读的消息 我知道实用程
  • 我想在 Windows 10 操作系统上安装 VB6。我需要处理 VBP 项目,所以我必须无缝安装 VB6

    我已经设置了VB6企业版 但无法完成安装 挂起 我已尝试通过以下链接安装程序 http nuke vbcorner net Tools VisualStudio6Installer tabid 93 language it IT Defau
  • 是否有用于 Shell 扩展的单击处理程序

    经过之后MSDN 外壳扩展 http msdn microsoft com en us library ff468984 v VS 85 aspx我不太确定是否可以扩展 Shell Click 或资源管理器的 Click Event 的行为
  • VB 6源代码,语音文本是法语想要翻译成英语[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个可能对我有用的程序 但文档和所有工具提示均采用我无法阅读的语言 源代码是可用的 整个事情大约有 84 000 行代码 我的问题
  • ATL COM 类注册 .rgs 文件默认值

    我正在创建一个 COM 服务器可执行文件 并且遇到了类注册问题 当我创建类对象时 自动生成的 rgs 文件如下所示 HKCR NoRemove CLSID ForceRemove 4C6DAD45 64B4 4C55 81C6 4CE125
  • WPF 组合框如果只有 1 项则自动选择

    我有一个组合框 我绑定到一个可观察的集合 它会发生变化 根据选择的公司 并且大量公司将有一个帐户 项目 因此我想知道制作组合框的最佳方法是什么如果 ItemsSource 中只有 1 个项目 则设置 SelectedItem 否则将其保留为
  • 当 AxWindowsMediaPlayer 关闭时,出现 AccessViolation 异常

    我有一个AxWMPLib AxWindowsMediaPlayer在表格上 当我关闭表单时 我收到 尝试读取或写入受保护的内存 这通常表明其他内存已损坏 例外 隐藏表单可以 但关闭则不行 当组件从表单中删除时 一切都很好 这是Winform
  • 在 C# WinForms 中预览文档(Word、Excel、PDF、文本文件等)?

    我正在开发一个 C WinForms 应用程序 我希望能够 预览 其中的各种文档类型 也就是说 当用户从列表中选择文件名时 它会在下面以相同的形式显示所选文件的预览 这很像 Outlook 允许您无需双击即可预览选定邮件的方式 有没有什么方
  • 某些笔记本电脑中的 VB.net Forms UI 显示问题

    我是 VB 应用程序的新手 无法弄清楚我的应用程序出了什么问题 有一个带有几个标签和文本字段的表单 当我在我和其他人的机器上运行该应用程序时 它显示良好 并具有正确的对齐和字体 然而 对于某些人来说 应用程序表单 UI 是破碎的 未对齐的文

随机推荐