![]() |
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: |
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
TTimer verlangt als Owner ein TComponent, das ist richtig. wenn ich aber keinen habe, dann sage ich das mit Nil ;)
|
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
![]() |
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
Ja und am Ende einigt man sich Stolz auf die geniale Variante, die bereits in Post #2 beschrieben wurde. Aber liegt wohl daran, das man einen jungen Padawan gerne übersieht. ;)
|
AW: Verwendung der System Komponente "Timer" ohne grafische Komponente in eigener Kla
Danke für die Blumen :lol:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 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