……来啊来啊,高手必看的问题啊,不看会后悔的呀,进来进来!!!

时间:2021-10-10 22:36:36
如何定义控件的多层属性(就是两级以上的属性定义)??
如控件a有属性b、c,属性b还有属性ID、NO等(语法:a.b.ID,a.b.NO,a.c.ID,a.c.NO依此类推),在VC中如何定义呢?如何使用Class Wizard定义呢?
谢谢高手们的关注啊!

30 个解决方案

#1


吸引眼球,不好意思~

#2


哎,CSDN解决问题的速度大不如从前了

#3


你把属性a定义成结构不行吗?

#4


链表,十字链表

#5


我说的是控件属性的接口定义,不是类的定义或结构的定义,在VC中定义控件的属性我使用
CLASS WIZARD,这个工具无法定义控件的多层属性。
希望高手门的建议能详细一点,谢谢

#6


有这必要吗

#7


没这必要

#8


当然有这必要了,这些属性是分类定义的,所以分类定义控件属性,因而要定义多层属性

#9


属性里包含属性?这是什么概念,控件有属性修饰不错,属性也有属性修饰,那被修饰的属性算什么?也算对象吗?属性分类可以,分层就不懂了?

#10


先创建一个包含2级属性的class
菜单Insert | New Class
Class Type = MFC Class
Name = 自己定义
Base class = CCmdTarget //必需
Automation 选 Createable by type ID

然后在ClassWizard里 的Automation页 ,Class name选择这个class,定义二级属性
第三步:同上方法,给你的控件增加一个LPDISPATCH类型的属性

最后:在你的控件初始化代码里,为这个属性创建那个二级属性类

最最后:如果你的控件是给VB调用,并且希望这个属性的类型不用LPDISPATH(在VB里是Object),希望直接是那个二级class(这样在VB里可以自动出属性列表),就要手工改工程中的ODL文件。在library定义里面的最上方,紧跟着importlib下面,加入一行:
dispinterface 二级属性class的interface name;
然后找到控件属性的地方,把IDispatch* 改成二级属性class的interface *

good luck

#11


  光回答也不给分
没意思

#12


嘿嘿,不好意思,比较晚看到,等我验证以后,一定给分,一定一定,呵呵,谢谢关心拉

#13


欢迎大家继续发言啊

#14


不用CLASSWIZAD,手工写这些代码不就得了

#15


你这种分类不是增加易用性,而是使用后就在也没有在用了。

#16


我的属性分类下:一个file(patient,CT_image,study......)。
Patient(name,birth,addr,phone。。。。。);
CT_image(ID,date,size,num....);
study(one,two,three........);
..........
假如不做成二级属性的话,会很混乱的,而且不同类型的file,它们之间的定义会交叉,互相覆盖,比如file2(patient,MR_image,study),图像层(CT,MR)不一样



#17


TO taolei,哎,真是悲哀,越做越觉得自己是个笨蛋了。
我做到:然后在ClassWizard里 的Automation页 ,Class name选择这个class,定义二级属性。
这步,已经无从下手了,救救我吧,怎么叫定义二级属性啊?还有什么叫给这个属性创建二级属性类啊?越看越糊涂了,555555~~~~~

#18


mail敬上:baconlli@citiz.net。
有代码的话,麻烦送送,谢谢谢谢,不胜感激

#19


简单明了的把问题说明白就是:我要定义自己的控件属性,像通用控件 button1.font.bold 这样的两级属性表,有办法吗?求代码吗,谢谢(baconlli@citiz.net)

#20


在VC中有button1.font.bold 这种写法吗?

#21


那是在VB中调用控件时的情况.





#22



    搞笑。

#23


不错

#24


例:
  字体属性:
      下级属性:色彩.
               字体大小.
               粗细.
               字体(宋体).
               其它属性.
看VCL有关字体属性定义的源代码试试看.

#25


没人能详细一点吗?

#26


定义二级属性是说给那个二级属性的class增加automation属性,如果这个都不会的话,先不要想什么二级属性了,先把基本的控件写熟练了。

#27


to taolei:
在classwizard里面给控件添加属性、事件、方法我都知道啊。只是你给我的建议字面意思让我有点模糊,看了好久才弄懂,嘿嘿

#28


老兄是VB出家的吧

#29


呵呵,没错啊

#30


我也是。哈哈。 

#1


吸引眼球,不好意思~

#2


哎,CSDN解决问题的速度大不如从前了

#3


你把属性a定义成结构不行吗?

#4


链表,十字链表

#5


我说的是控件属性的接口定义,不是类的定义或结构的定义,在VC中定义控件的属性我使用
CLASS WIZARD,这个工具无法定义控件的多层属性。
希望高手门的建议能详细一点,谢谢

#6


有这必要吗

#7


没这必要

#8


当然有这必要了,这些属性是分类定义的,所以分类定义控件属性,因而要定义多层属性

#9


属性里包含属性?这是什么概念,控件有属性修饰不错,属性也有属性修饰,那被修饰的属性算什么?也算对象吗?属性分类可以,分层就不懂了?

#10


先创建一个包含2级属性的class
菜单Insert | New Class
Class Type = MFC Class
Name = 自己定义
Base class = CCmdTarget //必需
Automation 选 Createable by type ID

然后在ClassWizard里 的Automation页 ,Class name选择这个class,定义二级属性
第三步:同上方法,给你的控件增加一个LPDISPATCH类型的属性

最后:在你的控件初始化代码里,为这个属性创建那个二级属性类

最最后:如果你的控件是给VB调用,并且希望这个属性的类型不用LPDISPATH(在VB里是Object),希望直接是那个二级class(这样在VB里可以自动出属性列表),就要手工改工程中的ODL文件。在library定义里面的最上方,紧跟着importlib下面,加入一行:
dispinterface 二级属性class的interface name;
然后找到控件属性的地方,把IDispatch* 改成二级属性class的interface *

good luck

#11


  光回答也不给分
没意思

#12


嘿嘿,不好意思,比较晚看到,等我验证以后,一定给分,一定一定,呵呵,谢谢关心拉

#13


欢迎大家继续发言啊

#14


不用CLASSWIZAD,手工写这些代码不就得了

#15


你这种分类不是增加易用性,而是使用后就在也没有在用了。

#16


我的属性分类下:一个file(patient,CT_image,study......)。
Patient(name,birth,addr,phone。。。。。);
CT_image(ID,date,size,num....);
study(one,two,three........);
..........
假如不做成二级属性的话,会很混乱的,而且不同类型的file,它们之间的定义会交叉,互相覆盖,比如file2(patient,MR_image,study),图像层(CT,MR)不一样



#17


TO taolei,哎,真是悲哀,越做越觉得自己是个笨蛋了。
我做到:然后在ClassWizard里 的Automation页 ,Class name选择这个class,定义二级属性。
这步,已经无从下手了,救救我吧,怎么叫定义二级属性啊?还有什么叫给这个属性创建二级属性类啊?越看越糊涂了,555555~~~~~

#18


mail敬上:baconlli@citiz.net。
有代码的话,麻烦送送,谢谢谢谢,不胜感激

#19


简单明了的把问题说明白就是:我要定义自己的控件属性,像通用控件 button1.font.bold 这样的两级属性表,有办法吗?求代码吗,谢谢(baconlli@citiz.net)

#20


在VC中有button1.font.bold 这种写法吗?

#21


那是在VB中调用控件时的情况.





#22



    搞笑。

#23


不错

#24


例:
  字体属性:
      下级属性:色彩.
               字体大小.
               粗细.
               字体(宋体).
               其它属性.
看VCL有关字体属性定义的源代码试试看.

#25


没人能详细一点吗?

#26


定义二级属性是说给那个二级属性的class增加automation属性,如果这个都不会的话,先不要想什么二级属性了,先把基本的控件写熟练了。

#27


to taolei:
在classwizard里面给控件添加属性、事件、方法我都知道啊。只是你给我的建议字面意思让我有点模糊,看了好久才弄懂,嘿嘿

#28


老兄是VB出家的吧

#29


呵呵,没错啊

#30


我也是。哈哈。