如何在 VB6 用户控件中实现高级自定义属性?
How to implement advanced custom properties in VB6 usercontrols?
抱歉,除了 "advanced custom properties",我不知道如何命名它。如果我知道,我会先搜索它。
我正在处理使用第 3 方控件的遗留代码。
在VB6中,当你将该控件拖到窗体上时,你可以在"Properties"window中看到该控件支持的所有属性。比如MarginLeft, MarginRight等等等等
没问题。
在"Property"window中,最上面的属性一般是“(Name)”字段,也就是控件的名称。
但是我用的第3方控件,在“(Name)”上面还有两个"fake properties",分别是“(About)”和“(Custom)”。
当您单击“(关于)”时,将出现一个显示公司信息的对话框。当您单击“(自定义)”时,将出现另一个显示更多属性的对话框。这些对话框在 VB6 中显示。
在“(自定义)”对话框中,您可以修改普通属性(与直接在属性 window中修改相同)。你可以做更多。还有更多不是普通属性的属性(至少你在 属性 window 中找不到任何东西)。
保存此表单时,对于正常属性,所有内容都保存到 .FRM 文件中。例如,
Control1.MarginLeft = 5
Control1.Text = "I am a control"
但是,在(自定义)对话框中编辑的"advanced properties",它们并没有保存在.FRM中,而是以二进制格式保存在.FRX中。
例如,在(自定义)对话框中,您可以编辑一个名为"Caption"的属性,其中包括该字幕的文本、字体、粗细、显示样式等等Caption 的类似属性。在 .FRM 中,它类似于
Control1.Caption = "frmForm1.frx":013F
Caption的所有文本和相关属性都以二进制格式保存在.FRX文件中。
注意,普通属性window中没有Caption属性,只能在“(自定义)”对话框中编辑。
我的问题如下,
如何实现这样一个可以在VB6中显示的(自定义)对话框?
如何让VB6的属性window显示(About)和(Custom)?
如何告诉VB6在属性中不显示Caption属性window,但可以直接在代码中使用Control1.Caption = xxxx.frx:offset
?
如何告诉VB6这个Caption 属性应该保存在.FRX中,以及如何告诉VB6数据的大小,以便VB6可以自动管理偏移量?
如何通过VB6自动加载数据,以便在(自定义)对话框中显示正确的值?
据我所知,.frx 格式是秘密,有很多人正在研究各种 .frx 标准控件,例如 Binary(images)、List 和 Text。我很好奇第 3 方控件如何使用 .frx,第 3 方控件是否应定义其自己的 .frx 格式?包括比如Length在前面多少个字节(或者根本没有长度字段,是定长),style1多少个字节,style2多少个字节等等
非常感谢。如果你知道这个"advanced properties"的专有名称,请告诉我名称,我可以自己搜索。
我尝试搜索高级属性,但没有真正得到我想知道的任何信息。
frx 文件用于二进制或其他非基本数据类型。 frm 将存储简单的属性。您需要做的是连接到 UserControl 事件 WriteProperties 和 ReadProperties。你不需要知道后备存储在哪里(frm vs frx),你只需要访问 PropBag 来读写你的数据。
Google是你找文档的朋友:
https://msdn.microsoft.com/en-us/library/aa242140(v=vs.60).aspx
或有关该主题的其他信息:
祝你好运!
抱歉,除了 "advanced custom properties",我不知道如何命名它。如果我知道,我会先搜索它。
我正在处理使用第 3 方控件的遗留代码。
在VB6中,当你将该控件拖到窗体上时,你可以在"Properties"window中看到该控件支持的所有属性。比如MarginLeft, MarginRight等等等等
没问题。
在"Property"window中,最上面的属性一般是“(Name)”字段,也就是控件的名称。
但是我用的第3方控件,在“(Name)”上面还有两个"fake properties",分别是“(About)”和“(Custom)”。
当您单击“(关于)”时,将出现一个显示公司信息的对话框。当您单击“(自定义)”时,将出现另一个显示更多属性的对话框。这些对话框在 VB6 中显示。
在“(自定义)”对话框中,您可以修改普通属性(与直接在属性 window中修改相同)。你可以做更多。还有更多不是普通属性的属性(至少你在 属性 window 中找不到任何东西)。
保存此表单时,对于正常属性,所有内容都保存到 .FRM 文件中。例如,
Control1.MarginLeft = 5
Control1.Text = "I am a control"
但是,在(自定义)对话框中编辑的"advanced properties",它们并没有保存在.FRM中,而是以二进制格式保存在.FRX中。
例如,在(自定义)对话框中,您可以编辑一个名为"Caption"的属性,其中包括该字幕的文本、字体、粗细、显示样式等等Caption 的类似属性。在 .FRM 中,它类似于
Control1.Caption = "frmForm1.frx":013F
Caption的所有文本和相关属性都以二进制格式保存在.FRX文件中。
注意,普通属性window中没有Caption属性,只能在“(自定义)”对话框中编辑。
我的问题如下,
如何实现这样一个可以在VB6中显示的(自定义)对话框?
如何让VB6的属性window显示(About)和(Custom)?
如何告诉VB6在属性中不显示Caption属性window,但可以直接在代码中使用
Control1.Caption = xxxx.frx:offset
?如何告诉VB6这个Caption 属性应该保存在.FRX中,以及如何告诉VB6数据的大小,以便VB6可以自动管理偏移量?
如何通过VB6自动加载数据,以便在(自定义)对话框中显示正确的值?
据我所知,.frx 格式是秘密,有很多人正在研究各种 .frx 标准控件,例如 Binary(images)、List 和 Text。我很好奇第 3 方控件如何使用 .frx,第 3 方控件是否应定义其自己的 .frx 格式?包括比如Length在前面多少个字节(或者根本没有长度字段,是定长),style1多少个字节,style2多少个字节等等
非常感谢。如果你知道这个"advanced properties"的专有名称,请告诉我名称,我可以自己搜索。
我尝试搜索高级属性,但没有真正得到我想知道的任何信息。
frx 文件用于二进制或其他非基本数据类型。 frm 将存储简单的属性。您需要做的是连接到 UserControl 事件 WriteProperties 和 ReadProperties。你不需要知道后备存储在哪里(frm vs frx),你只需要访问 PropBag 来读写你的数据。
Google是你找文档的朋友:
https://msdn.microsoft.com/en-us/library/aa242140(v=vs.60).aspx
或有关该主题的其他信息:
祝你好运!