请教 自定义一个类,类里包含timer组件变量这样是否可行,create该怎么写 
有人说 
constructor TPhoneControl.Create;
begin
HandleTimer := TTimer.Create(self);//(application);
end;有资料说TTimer.Create(self);参数要self,但是我试了会报错,nil也会报错,请问TTimer初始化该怎么处理,还是类里不能创建timer组件变量?

解决方案 »

  1.   

    自定义类 继承自哪里?TTimer.Create(self); 里的Self必须继承自COMPONENTS
      

  2.   

    constructor TPhoneControl.Create;
    begin
       inherited Create;
       HandleTimer := TTimer.Create(nil);
    end;
      

  3.   

    是说自定义的类要继承COMPONENTS吗?
      

  4.   


    ------------那要看情况了,如果你自定义类继承自COMPOnentsHandleTimer := TTimer.Create(Self);就没问题如果自CLASS 那么 HandleTimer := TTimer.Create(nil);你主要报错的原因是 构建函数没有inherited Create; 
      

  5.   


    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.
      

  6.   

    添加 inherited Create;  后仍然报错