background image

如何用

Delphi 做一个有颜色属性的按钮

在标准的

Windows 程序中所有按钮均没有颜色。因此 Delphi 提供的所有按钮组件也均无颜

色属性,有时你可能做了一个五颜六色的程序界面,而按钮颜色可能很不相称。
在此本人提供一种用自定义组件制作有颜色属性的铵钮的方法,它遵循了

Delphi 的组件定

义规则,完成后该按钮与普通按钮(

Button)相比,多了一个 Color 属性,你可以永远地使

用它,在设计阶段随意地改变颜色,就象是

Delphi 本身提供的组件一样(本文代码在

Delphi4.0 下完成)。
第一步
打开

Delphi,选择菜单的 Component/NewComponent 选项,在弹出对话框的 Ancestortype

下拉框中手工填入或下拉选择

TButton,这是选择了我们自定义组件的祖先类,我们将以此

为基础完成自定义组件的下一步代码编写(这也是自定义组件编写的第一步)。对话框中的
其余可编写内容就随你的高兴而填写了,但是你必须注意

ClassName(类名)不能和已有的

(包括你自定义的)类名相同,同时还应该记住该自定义组件的安装位置

(PalettePage 下拉

框中的内容

)和单元文件在磁盘上的存放位置(Unitfilename 编辑框内容),不然以后你在何处

去找它

?本文以 Delphi 的默认值 TButton1 为类名。

第二步
做完以上工作后,按下面的

OK 按钮,Delphi 将为你自动生成一个基本的组件代码,对这

样的代码框架一般没有必要修改,一定要修改的话请注意

Delphi 的组件定义规则(本文只

是删除了所有自动生成的注释内容),接着就应该将其文件存盘。
第三步
在上面的代码框架中添加我们的代码,当然这是我们要做的主要工作。
1. 将 Delphi 自动生成的单元文件的数据类型定义部份修改为:
type
TButton1=class(TButton)
private
FColor:TColor;
FCanvas:TCanvas;
IsFocused:Boolean;
procedureSetColor(Value:TColor);
procedureCNDrawItem(varMessage:TWMDrawItem);messageCN_DRAWITEM;
protected
procedureCreateParams(varParams:TCreateParams);override;
procedureSetButtonStyle(ADefault:Boolean);override;
public
constructorCreate(AOwner:TComponent);override;
destructorDestroy;override;
published