![]() |
Delphi-Version: 5
Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Klasse
Hallo Allerseits,
ich habe eine Frage zu der Timer-Komponente. Mein Ziel ist es ohne grafische Programmierung, einen Timer vom Typ TTimer in einer eigenen Klasse zu verwenden. Grundsätzlich geschafft habe ich dies schon in einem "normalen" Programm (siehe Beispielquellcode):
Delphi-Quellcode:
Ich möchte den Timer aber in einer eignen Klasse verwenden.
unit Timer_ohne_Grafik;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; procedure Abgelaufen(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Abgelaufen(Sender: TObject); begin ShowMessage('Test'); end; procedure TForm1.FormCreate(Sender: TObject); begin Timer1:=TTimer.Create(self); Timer1.Enabled:=true; Timer1.name:='Timer'; Timer1.Interval:=5000; Timer1.OnTimer:=Abgelaufen; end; end. Wenn also eine Instanz der eigenen Klasse erzeugt wird, soll automatisch ein Timer mit erzeugt werden, der dann in dieser Instanz läuft. Quelltext des Konstruktors:
Delphi-Quellcode:
Der Compiler meldet hier den Fehler: UProgramm.pas(51): Inkompatible Typen: 'TComponent' und 'TEigeneKlasse' in der Zeile
constructor TEigeneKlasse.Create(iModus: integer);
var i, j: integer; begin inherited Create; //hierdurch wird der ursprüngliche Konstruktor aufgerufen FiModus := iModus; Timer1:=TTimer.Create(self); Timer1.Enabled:=true; Timer1.name:='Timer'; Timer1.Interval:=5000; Timer1.OnTimer:=Abgelaufen; end;
Delphi-Quellcode:
.
Timer1:=TTimer.Create(self);
Was mache ich falsch? Was muss ich anstatt "self" in die Klammer schreiben? |
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
Wenn Du den Timer im Destruktor wieder freigibst, kannst Du auch nil übergeben.
|
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
Zitat:
Wenn Du ganz unabhängig von den visuellen Komponenten sein willst, wäre der Multimediatimer eine Alternative. Grüße, Messie |
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
Zitat:
|
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
Zitat:
|
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
In wie fern?
|
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
Zitat:
![]()
Delphi-Quellcode:
reinkriegt, sehe, dass AComponent mein EditKundenNummer ist, ohnen dass ich in den diversen Debug-Fenstern groß casten oder Funktionsauswertung zulassen o.ä. muss.
AComponent: TComponent
|
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
Zitat:
Und was macht man wenn man diese Klasse in einer fensterlosen App nutzen möchte? |
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
Zitat:
Grüße, Messie |
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
Warum nicht einfach:
Delphi-Quellcode:
So mach ich das immer und das klappt in jeder eigenen Klasse, besonders in nicht visuellen.
constructor TEigeneKlasse.Create(iModus: integer);
var i, j: integer; begin inherited Create; //hierdurch wird der ursprüngliche Konstruktor aufgerufen FiModus := iModus; Timer1:=TTimer.Create(nil); Timer1.Enabled:=true; Timer1.Interval:=5000; Timer1.OnTimer:=Abgelaufen; end; destructor TEigeneKlasse.destroy; //evtl. override; begin Timer1.Free; inherited; end: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz