请教 自定义一个类,类里包含timer组件变量这样是否可行,create该怎么写
有人说
constructor TPhoneControl.Create;
begin
HandleTimer := TTimer.Create(self);//(application);
end;有资料说TTimer.Create(self);参数要self,但是我试了会报错,nil也会报错,请问TTimer初始化该怎么处理,还是类里不能创建timer组件变量?
有人说
constructor TPhoneControl.Create;
begin
HandleTimer := TTimer.Create(self);//(application);
end;有资料说TTimer.Create(self);参数要self,但是我试了会报错,nil也会报错,请问TTimer初始化该怎么处理,还是类里不能创建timer组件变量?
begin
inherited Create;
HandleTimer := TTimer.Create(nil);
end;
------------那要看情况了,如果你自定义类继承自COMPOnentsHandleTimer := TTimer.Create(Self);就没问题如果自CLASS 那么 HandleTimer := TTimer.Create(nil);你主要报错的原因是 构建函数没有inherited Create;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; TMyBtn = class(TButton)
private
FTimer: TTimer;
procedure OnTimer(Sender: TObject);
public
constructor Create(Owner: TComponent); override;
destructor Destory;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
with TMyBtn.Create(Self) do begin
Left := 100;
Top := 60;
Width := 200;
Height := 30;
Parent := Self;
Show;
end;
end;{ TMyBtn }constructor TMyBtn.Create(Owner: TComponent);
begin
inherited;
FTimer := TTimer.Create(Owner);
FTimer.Interval := 500;
FTimer.Enabled := True;
FTimer.OnTimer := Self.OnTimer;
end;destructor TMyBtn.Destory;
begin
FTimer.Free;
end;procedure TMyBtn.OnTimer(Sender: TObject);
begin
Self.Caption := FormatDateTime('YYYY-MM-DD hh:nn:ss', Now);
end;end.