【发布时间】:2018-03-21 07:10:40
【问题描述】:
对不起,除了“高级自定义属性”之外,我不知道如何命名它。如果我知道,我会先搜索它。
我正在使用 3-rd 方控件处理遗留代码。
在 VB6 中,当您将该控件拖到窗体上时,您可以在“属性”窗口中看到该控件支持的所有属性。比如MarginLeft、MarginRight等等等等。
没问题。
在“属性”窗口中,最顶层的属性一般是“(名称)”字段,即控件的名称。
但是我正在使用的第三方控件,在“(名称)”之上还有另外两个“假属性”,它们是“(关于)”和“(自定义)”。
当您点击“(关于)”时,会出现一个显示公司信息的对话框。当您单击“(自定义)”时,将出现另一个显示更多属性的对话框。这些对话框显示在 VB6 中。
在“(自定义)”对话框中,您可以修改普通属性(与直接在属性窗口中修改相同)。你可以做更多。还有更多不是普通属性的属性(至少你在属性窗口中找不到任何东西)。
当您保存此表单时,对于普通属性,所有内容都会保存到 .FRM 文件中。例如,
Control1.MarginLeft = 5
Control1.Text = "I am a control"
但是,对于在(自定义)对话框中编辑的“高级属性”,它们并没有保存为.FRM,而是以二进制格式保存为.FRX。
例如,在(自定义)对话框中,您可以编辑一个名为“Caption”的属性,其中包括该标题的文本、字体、粗细、显示样式以及许多与 Caption 类似的属性。在 .FRM 中,类似于
Control1.Caption = "frmForm1.frx":013F
Caption 的所有文本和相关属性都以二进制格式保存在 .FRX 文件中。
请注意,普通属性窗口中没有 Caption 属性,您只能在“(自定义)”对话框中进行编辑。
我的问题如下,
如何实现这样一个可以在VB6中显示的(自定义)对话框?
如何让VB6的Property窗口显示(About)和(Custom)?
如何告诉VB6不能在Property window中显示Caption属性,而可以直接在代码中使用
Control1.Caption = xxxx.frx:offset?如何告诉VB6这个Caption属性应该保存在.FRX中,以及如何告诉VB6数据的大小,以便VB6可以自动管理偏移量?
如何通过VB6自动加载数据,以便在(自定义)对话框中显示正确的值?
据我所知,.frx 格式是秘密,有很多人在挖掘各种 .frx 标准控件,例如二进制(图像)、列表和文本。我很好奇第三方控件如何使用 .frx,第三方控件是否应该定义自己的 .frx 格式?包括例如Length前面多少字节(或者根本没有长度字段,它是固定长度),style1多少字节,style2多少字节等等。
非常感谢。如果您知道这个“高级属性”的专有名称,请告诉我名称,我可以自行搜索。
我试图搜索高级属性,但没有真正得到我想知道的任何内容。
【问题讨论】:
-
我想你要找的是property pages
-
嗨,谢谢。这就是我需要的。我检查了属性页,一切正常,除了我不知道如何定义一个属性,其值保存到“FRX”文件中,就像图像/图标属性一样。
-
我可能是错的,但我认为将 ASCII 值写入 .frm 文件并将二进制值写入 .frx 文件的决定是由 VB 本身在内部控制的,但是“property bag”这个短语来了记住,可能会有所帮助。我没有写active-x控件的第一手经验,所以这里只靠记忆。
-
无论属性存储在 frm 还是 frx 中,为什么对您的程序很重要?