打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Ribbon控件如何确定cxBarEditItem的属性类型

Ribbon控件如何确定cxBarEditItem的属性类型

作者:慧都控件网 | 2010-06-01 11:27:31| 阅读 1651 有用 (1) 评论 (0) 收藏


概述:在使用DevExpress 的Ribbon控件过程中,发现cxBarEditItem的属性类型是可变的,并且难以确定。在界面上的显示只不过是TextEdit, ComboBox之类的字符串,而实际对应的对象却完全不是。本文将与你一起分享Ribbon控件如何确定cxBarEditItem的属性类型。

  在使用DevExpress 的Ribbon控件过程中,发现cxBarEditItem属性类型是可变的,并且难以确定。在界面上的显示只不过是TextEdit, ComboBox之类的字符串,而实际对应的对象却完全不是。要找出真实的对象名称,还是需要花一定的功夫的。

  下面就是找对象名称的过程了,首先确保DevBar的Source目录被配置在了Library Path中,因为我们需要不止一次的重新编译控件,不能够只配置dcu的目录。然后,跟据属性编辑器的特点,找到相应的RegisterPropertyEditor方法,搜一下就会在cxBarEditItemReg.pas这个文件里,找到一句代码:

RegisterPropertyEditor(TypeInfo(TcxCustomEditProperties), TcxCustomBarEditItem,
    'Properties', TcxBarEditItemPropertiesProperty);

  从此代码可以确定,properties属性的编辑器就是TcxBarEditItemPropertiesProperty,然后按着Ctrl点一下这个类名,直接跳转到了属性编辑器的声明部分。我们直接看SetValue()方法。

  在里面找到了关键的一句代码:

APropertiesClass := TcxCustomEditPropertiesClass(GetRegisteredEditProperties.FindByClassName(Value));

  原来它的填充类是通过一个特定的工厂方法返回的,接着我们就能直接跟进去了,找到FindByClassName这个方法,打下断点。然后运行程序,会看到这个方法被一次次的调用,而其中有一次,就是properties属性调用的了。

  在这里,我们无法确定哪一次才是Properties属性调用的,而且由于Dev控件的复杂性,这个方法被反复调用多次。因此,我们略微的修改代码,以满足确定属性的需要。

改动如下:

function TcxRegisteredClasses.FindByClassName(const AClassName: string): TClass;
var
I: Integer;
begin
Result := nil;
for I := 0 to Count - 1 do
begin
    if Items[I].ClassName = AClassName then
    begin
      {$DEFINE DEBUG}
      {$IFDEF DEBUG}
      if items[i].InheritsFrom(TcxCustomEditProperties) then
      begin
          WriteLog(AClassName);
      end;
      {$ENDIF}
      Result := Items[I];
      Break;
    end;
end;
end;

  红色的部分就是添加的代码了,WriteLog是一个自定义函数,作用是往C盘根目录下写一个Log文件,文件的内容即继承自TcxCustomEditProperties的类。

  程序执行后,打开这个文本一看,就一目了然了。

  上面的代码用了编译预处理,如果不需要写文件,就把{$DEFINE DEBUG} 改成 {.$DEFINE DEBUG},如果下一次还需要做此工作,再改回来。

  慧都科技作为Developer Express公司目前在中国唯一正式授权的经销商,不仅为DXperience提供了全面的技术支持服务,同时还倾情打造 DevExpress for.net高级培训以及DXperience Winform子控件培训,让您深入了解控件实现效果和常见问题的解决思路,提高开发效率。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
细品RibbonX(15):回调(CallBacks)
VBA专题10-20:使用VBA操控Excel界面之隐藏和取消隐藏控件、组和选项卡
Developing Windows-based Applications
实现Ribbon风格的窗体
DevExpress学习笔记
Winform开发框架之Office Ribbon界面
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服