Delphi 6.0中属性编辑器的解决方案

Delphi 6.0中属性编辑器的解决方案

    Delphi中用户可以自己声明属性编辑器在程序设计期间对第三方控件进行设计,对属性编辑器的声明可以在注册控件的时候通过RegisterComponentEditor过程进行定义,具体为:
    procedure RegisterComponentEditor(ComponentClass: TComponentClass; ComponentEditor: TComponentEditorClass);
    当然,用户在注册前要定义自己的属性编辑器,下面是一个例子:
    TOutlookBarEditor = class(TComponentEditor)
      function GetVerb(Index: Integer): string; override;
      function GetVerbCount: Integer; override ;
      procedure Edit; override;
      procedure ExecuteVerb(Index: Integer); override;
    end;

    其中最关键的部分在于对RegisterComponentEditor的引用。
    在Delphi5.0中,可以直接将$(DELPHI)/Source/ToolsAPI目录下的DsgnIntf.pas文件拷贝到控件的设计目录下或者拷贝到$(DELPHI)/Lib目录即可。
    在Delphi6.0中,Delphi将文件分解成DesignIntf.pas和DesignEditors.pas两个文件,所以引用时要将$(DELPHI)/Source/ToolsAPI目录下的DesignIntf.pas和DesignEditors.pas两个文件拷贝到控件的设计目录下或者拷贝到$(DELPHI)/Lib目录。
    当然,如果你的Delphi Package的搜索路径或者Delphi IDE的搜索路径可以搜索到$(DELPHI)/Source/ToolsAPI目录就省去此麻烦。

    但是,在Delphi 6.0中,如果就此编译,会出现找不到Proxies.dcu文件的问题。因为Proxies被编译了,在Delphi的目录中根本就找不到此相关文件,它已经被编译到designide.dcp文件中,解决方案很简单,就是在你的Package中引用designide.dcp文件即可,具体作法是:
    Project->View Source->在requires部分加入对designide的引用即可。

    由于此部分文件只是在设计期间才有效,所以你的Package在设计时就要注意:
    不要在运行期间将在进行期间使用的文件加入对DesignIntf.pas和DesignEditors.pas两个文件的引用,否则依然会出现找不到Proxies.dcu文件的问题,要将文件脱离!

    当然,如果你的Package要在Delphi 5.0及Delphi6.0下同时能运行,那就要下点功夫通过编辑器的版本进行控制,Delphi 6.0的编辑器版本是VER140,Delphi 5.0的编辑器版本是VER130,下面是本人的一个真实的引用文件:
    uses
      Classes, {$IFDEF VER140}DesignIntf, DesignEditors{$ELSE}DsgnIntf{$ENDIF};

    Package部分由于版本不同而对不同的版本要进行不同的设计,再此就不叙述了!


    其它补记:由于Delphi 5.0和Delphi 6.0对过程及参数的定义区域不同而出现错误,所以在编写两个版本的Package时一定要注意引用虚函数时出现的问题。例如对TControl控件的SetAutoSize(Value: Boolean)过程的引用:
    在Delphi 5.0中定义为:
    private
      procedure SetAutoSize(Value: Boolean);
    而在Delphi 6.0中定义为:
    protected
      procedure SetAutoSize(Value: Boolean); virtual;
    此时的定义要根据自己的实际情况定义了,可不能随便定义了!



    Starfarm--->Docn Hank(starfarm@263.net)

    2001.11.13
  • 1
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论
1、支持屏幕打印,控制方法多样,可以打印全部rxlib控件 全部InfoPower控件,TDBGrid,TStringGrid,TImage,TEdit等,TDBGridEh,f1book, TDecisionGrid等等众多控件。   2、支持最终用户设计、修改报表,只需连接相关数据源,指出数据位 置(设置报表样式),无论是主从表,子报表,套表,都可迅速生成。开发 一个报表只需几分钟时间。    3、报表样式可以保存为rmf格式,下次可通过读入使用(配合SQL脚本就可以生成 报表)。并可以把带数据报表保存为rmp格式,在任何机器上都可以浏览、打印, 而不需要数据库。    4、生成后报表支持修改,包括字体设置,边框设置,修改内容等。   5、报表编辑器内自带ado,bde,ibx,Diamond dao,dbisam等数据访问控件,可以 通过这些控件开发独立报表制作工具。其使用方法和delphi控件是一样。 6、完全、自由自定义页面、边距、字体,标题和页眉页脚,并可以在自认合适 地方插入函数来实现当前日期,页合计,总合计等功能,合计字段可以放在页头,分 组头,并支持条件合计,对分组合计,分页合计,总计等只需简单地设置属性即可。    7、完全支持D5--D7,BCB5--BCB6。    8、报表可以在自认合适事件(on beforeprint,on afterprint等)加入程 序脚本,以控制、或实现更复杂打印效果。    9、更新迅速,可根据使用人员与用户意见,不断加入新功能。    10、多种格式转换,可以把做出报表转换为html,xls,pdf,bmp,jpeg等等格式。   11、自动对超长记录折行,超长内容也会自动折行,文换行不会乱码。    12、首家支持缩放打印功能,可以根据打印时选择纸张自动缩放报表。    13、首家支持即打即停.    14、首家提供类似excel报表设计器,给你足够灵活方表报表设计方式。    15、首家提供双报表设计器(第一种,第二种),满足所有需求。    16、更是提供类似于ObjectPascalscript,实现特殊功能。    17、首家提供web,IntraWeb报表解决方案。    18、首家提供报表压缩处理,占用内存更少,生成报表速度更快。    19、首家提供合并单元格功能,更加适应处理复杂文报表。    20、自动填空行,每页打印数量等细节处理更完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

Hank

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值