控件中如果自定义了属性编辑器,需要分成设计期包和运行期包。实际上是同一份代码,分别命名为两个bpk工程。我的设计包叫ButtonGaphic.bpk,而运行期包命名为ToolButton.bpk。在编译这两个包时,也要注意Options中的设置。如下图:
分别编译这两个bpk后,会在C++builder相关目录中产生以bpk名字命名的文件,如ButtonGaphic.bpl、ButtonGaphic.bpi、ButtonGaphic.lib和ToolButton.bpl、ToolButton.bpi、ToolButton.lib
还有几点要说明:
1、在编译设计期包的时候,要在Requires中加入designide.bpi。
2、在编译运行期包的时候,不要包含#include "editproperty.hpp"文件。(本控件中定义了自己的属性编辑器,从TPropertyEditor中继承了一个类TMyPropertyEditor,单独放在editproperty.hpp文件中)
3、在运行期包中,不要注册属性编辑器。即屏蔽RegisterPropertyEditor代码。
4、在编译应用程序时,在Build with runtime packages中加入运行时的ToolButton包,即ToolButton.bpi,ToolButton.lib,并去掉设计时的包信息,如ButtonGraphic.bpi,ButtonGraphic.lib
分别编译这两个bpk后,会在C++builder相关目录中产生以bpk名字命名的文件,如ButtonGaphic.bpl、ButtonGaphic.bpi、ButtonGaphic.lib和ToolButton.bpl、ToolButton.bpi、ToolButton.lib
还有几点要说明:
1、在编译设计期包的时候,要在Requires中加入designide.bpi。
2、在编译运行期包的时候,不要包含#include "editproperty.hpp"文件。(本控件中定义了自己的属性编辑器,从TPropertyEditor中继承了一个类TMyPropertyEditor,单独放在editproperty.hpp文件中)
3、在运行期包中,不要注册属性编辑器。即屏蔽RegisterPropertyEditor代码。
4、在编译应用程序时,在Build with runtime packages中加入运行时的ToolButton包,即ToolButton.bpi,ToolButton.lib,并去掉设计时的包信息,如ButtonGraphic.bpi,ButtonGraphic.lib
这两个bpl包的名字名字虽然不同,但是因为bpl中控件类是一样的,所以应用程序发行时,能正常运行。
如果你选择了图中的第三个选项designtime and runtime,那么不需要分成两个包设计。但是在编译应用程序的时候,要加designide.bpi包,并且不能带包编译。即Builde with runtime packages的勾不能去掉。程序在发行时也要带上designide.bpl文件一起。