谁有Delphi控制PowerPoint完整的例子
1个回答
展开全部
Delphi中用户可以自己声明属性编辑器在程序设计期间对第三方控件进行设计,对属性编辑器的声明可以在注册控件的时候通过RegisterComponentEditor过程进行定义,具体为:procedureRegisterComponentEditor(ComponentClass:TComponentClass;ComponentEditor:TComponentEditorClass);当然,用户在注册前要定义自己的属性编辑器,下面是一个例子:TOutlookBarEditor=class(TComponentEditor)functionGetVerb(Index:Integer):string;override;functionGetVerbCount:Integer;override;procedureEdit;override;procedureExecuteVerb(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目录。当然,如果你的DelphiPackage的搜索路径或者DelphiIDE的搜索路径可以搜索到$(DELPHI)\Source\ToolsAPI目录就省去此麻烦。但是,在Delphi6.0中,如果就此编译,会出现找不到Proxies.dcu文件的问题。因为Proxies被编译了,在Delphi的目录中根本就找不到此相关文件,它已经被编译到designide.dcp文件中,解决方案很简单,就是在你的Package中引用designide.dcp文件即可,具体作法是:Project->ViewSource->在requires部分加入对designide的引用即可。由于此部分文件只是在设计期间才有效,所以你的Package在设计时就要注意:不要在运行期间将在进行期间使用的文件加入对DesignIntf.pas和DesignEditors.pas两个文件的引用,否则依然会出现找不到Proxies.dcu文件的问题,要将文件脱离!当然,如果你的Package要在Delphi5.0及Delphi6.0下同时能运行,那就要下点功夫通过编辑器的版本进行控制,Delphi6.0的编辑器版本是VER140,Delphi5.0的编辑器版本是VER130,下面是本人的一个真实的引用文件:usesClasses,{$IFDEFVER140}DesignIntf,DesignEditors{$ELSE}DsgnIntf{$ENDIF};Package部分由于版本不同而对不同的版本要进行不同的设计,再此就不叙述了!其它补记:由于Delphi5.0和Delphi6.0对过程及参数的定义区域不同而出现错误,所以在编写两个版本的Package时一定要注意引用虚函数时出现的问题。例如对TControl控件的SetAutoSize(Value:Boolean)过程的引用:在Delphi5.0中定义为:privateprocedureSetAutoSize(Value:Boolean);而在Delphi6.0中定义为:protectedprocedureSetAutoSize(Value:Boolean);virtual;此时的定义要根据自己的实际情况定义了,可不能随便定义了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询