Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5
  Alt 31. Mai 2003, 18:47
Hallo,
entschuldige bitte, ich habe Deinen Code nicht sorgfältig genug gelesen.
Dein constructor ist nicht ganz richtig.
Du schreibst:
Delphi-Quellcode:
constructor TBlinkLabel.Create(AOwner: TComponent);
begin
  inherited;
  fTimer := TTimer.Create(AOwner);
  fTimer.OnTimer := TimerEvent;
end;
Bei Deinem Code wird das Formular der Besitzer des Timers !!!
Damit gibt das Formular auch den Timer wieder frei.
Der Besitzer sollte aber Deine Komponente sein.
Es muss aber so lauten:
Delphi-Quellcode:
constructor TBlinkLabel.Create(AOwner: TComponent);
begin
  inherited;
  fTimer := TTimer.Create(Self); // Durch Self wird Deine Komponente zum Besitzer
  fTimer.OnTimer := TimerEvent;
end;
Jetzt fehlt Dir noch der passende destructor.
Du musst ja den Timer wieder freigeben.
Delphi-Quellcode:
destructor TBlinkLabel.Destroy;
begin
  fTimer.Free;
  inherited;
end;
  Mit Zitat antworten Zitat