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

Com 如何在VB6用户控件中实现高级自定义属性?,com,vb6,controls,activex,Com,Vb6,Controls,Activex,对不起,除了“高级自定义属性”,我不知道如何命名它。如果我知道,我会先搜索它 我正在处理使用第三方控件的遗留代码 在VB6中,将该控件拖到窗体上时,可以在“属性”窗口中看到该控件支持的所有属性。如MarginLeft、MarginRight等 没问题 在“Property”窗口中,最上面的属性通常是“(Name)”字段,它是控件的名称 但我使用的第三方控件在“(名称)”上方还有两个“假属性”,分别是“(关于”和“(自定义)” 单击“(关于)”时,将出现一个显示公司信息的对话框。单击“(自定义)”

对不起,除了“高级自定义属性”,我不知道如何命名它。如果我知道,我会先搜索它

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

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

没问题

在“Property”窗口中,最上面的属性通常是“(Name)”字段,它是控件的名称

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

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

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

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

  Control1.MarginLeft = 5
  Control1.Text = "I am a control"
但是,对于在(自定义)对话框中编辑的“高级属性”,它们不是保存在.FRM中,而是以二进制格式保存在.FRX中

例如,在(自定义)对话框中,您可以编辑名为“标题”的属性,该属性包括此标题的文本、字体、权重、显示样式以及标题的许多类似属性。在.FRM中,它有点像

   Control1.Caption = "frmForm1.frx":013F
标题的所有文本和相关属性都以二进制格式保存在.FRX文件中

请注意,普通属性窗口中没有标题属性,只能在“(自定义)”对话框中对其进行编辑

我的问题是:

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

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

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

  • 如何告知VB6此标题属性应保存在.FRX中,以及如何告知VB6数据的大小,以便VB6能够自动管理偏移量

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

  • 据我所知,.frx格式是秘密,有很多ppl深入到各种.frx标准控件中,例如二进制(图像)、列表和文本。我很好奇第三方控件如何使用.frx,第三方控件是否应该定义自己的.frx格式?包括例如,长度的前面有多少字节(或者根本没有长度字段,它是固定长度),样式1有多少字节,样式2有多少字节,等等

  • 非常感谢。如果你知道这个“高级属性”的专有名称,只要告诉我名称,我就可以自己搜索


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

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

    谷歌是您查找文档的朋友:

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


    祝你好运

    我想你要找的是你好,谢谢。这就是我需要的。我检查了属性页,一切正常,只是我不知道如何定义一个属性,它的值保存到“FRX”文件中,就像图像/图标属性一样。我可能错了,但我认为将ASCII值写入.frm文件和将二进制值写入.FRX文件的决定是由VB本身内部控制的,然而,“财产袋”一词出现在脑海中,可能会有所帮助。我没有编写active-x控件的第一手经验,所以我在这里只依赖内存。为什么属性存储在frm或frx中的任何位置对您的程序都很重要?