|
为Protected,使其子类可以有更灵活的选择,是否把这些属性显示到对象察看器中,如果想,则到Published中重新声明这些属性就可以,我参考了一下TPanel的源码,并按需要选择了其中的一些属性声明到Published中,注意哦,事件也是属性,只要你把它显化出来,就可以设置处理事件了。
四.以下是计数组件的源码,相信有了上面的讲解,应该不会很难了:
unit CountUnit;
interface
uses
SysUtils,Classes,Graphics,Controls,ExtCtrls;
type
//用于设置时间事件发生的间隔
TInterval=(TenM,TwentyM,ThirtyM,FortyM,FiftyM,SixtyM);
TTimeCount=class(TCustomPanel)
private
FTimer:TTimer;
FCount:integer; //只读私有成员,计数值
FInterval:TInterval; //时间事件发生的间隔
FActive:Boolean; //决定是否发生间隔事件
TimeLen:Integer;//发生事件的时间长度,以秒为单位。
TimeNum:integer;//计数值,和TimeLen一起有用,以判断是否事件该发生了
FTimeOut:TNotifyEvent;//事件的方法指针
procedure SetInterval(I:TInterval);
procedure SetActive(A:boolean);
procedure FTimerTimer(Sender:Tobject);//时间控件的事件处理函数
protected
procedure DoTimeOut;dynamic; //调度方法,用于关联事件。
public
procedure pause; //暂停计数
procedure Resume;//从暂停的计数开始计数。
procedure stop;//停止
procedure start;//开始计数
constructor Create(AOwner:TComponent);override;
destructor Destroy;override;
property Count:Integer read FCount; //计数值的只读属性
published
property Interval:TInterval read FInterval write SetInterval Default TenM;
property Active:boolean read FActive write SetActive default false;
property OnTimeOut:TNotifyEvent read FTimeOut write FTimeOut;
//显式祖先类的一些属性在对象察看器中
property BevelInner;
property BevelOuter;
property BevelWidth;
property Color;
property Font;
property PopupMenu;
property ShowHint;
property TabOrder;
property TabStop;
property Visible;
property OnClick;
property OnDblClick;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
end;
implementation
//构造函数,继承父类的构造函数,并初始化类中的成员。
constructor TTimeCount.Create(AOwner:TComponent);
//创建时间控件并设置相关的参数
procedure CreateTimer;
begin
FTimer:=TTimer.Create(self);
FTimer.Enabled:=False;
FTimer.Interval:=1000;
FTimer.OnTimer:=FTimerTimer;
end;
//以下是设置外观的
procedure setView;
begin
Width:=100;
Height:=50;
Color:=$000000;
Font.Color:=$FFFFFF;
Font.Size:=14;
上一页 [1] [2] [3] [4] [5] 下一页 没有相关教程
|