Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Welcher Timer (https://www.delphipraxis.net/19589-welcher-timer.html)

ThunderX86 5. Apr 2004 20:37


Welcher Timer
 
Hi, n00b Nummer X Meldet sich das 2. mal zu Wort und hat eine Frage.

Ich habe mehrere Timer die das gleiche Event bei OnTimer aufrufen, wie kann ich dabei herausfinden welcher Timer aber gerade das Event aufgerufen hat?

Ich hätte zu Testen nämlich dann gerne etwas wie ShowMessage('Ich bin Timer: '+timernummer);

Kann mir jemand helfen? Das ist das letzte das ich für mein erstes Programm benötige damit es fertig ist. :)

Pseudemys Nelsoni 5. Apr 2004 20:39

Re: Welcher Timer
 
pack es doch einfach mit in das OnTime event

Nikolas 5. Apr 2004 20:52

Re: Welcher Timer
 
Und wenn du dieses Event nicht x-mal in jedes OnTImer-Event pasten willst, kannst du dir auch einfach eine Globale Variable nehmen und dann schreibt jeder Timer im ontimer-event seine Nummer da rein.

himitsu 5. Apr 2004 20:55

Re: Welcher Timer
 
Jedes Objekt übergibt sich ja selber beim Aufrufen einer Ereignisprozedur im Parameter Sender an die Ereignisprozedur. Und diesen Parameter kann man ja vergleichen (siehe 1), oder seine Parameter abfragen (siehe 2).

1: Sender mit den Namen der verschiedenen Timer vergleichen:
Delphi-Quellcode:
Procedure TForm1.TimerXTimer(Sender: TObject);
  Begin
    If Sender = Timer1 Then ShowMessage('Ich bin Timer: 1');
    If Sender = Timer2 Then ShowMessage('Ich bin Timer: 2');
    ...
  End;
2: oder in jedem Parameter Tag (siehe OI) eine andere Zahl eintragen und siese auswerten:
Delphi-Quellcode:
{Timer1.Tag = 1}
{Timer1.Tag = 2}
{...}

Procedure TForm1.TimerXTimer(Sender: TObject);
  Begin
    ShowMessage('Ich bin Timer: ' + IntToStr(TTimer(Sender).Tag));
  End;

alcaeus 5. Apr 2004 20:56

Re: Welcher Timer
 
Wie wärs, das ganze mit Hilfe des Sender-Parameters zu lösen? Über diesen Parameter kannst du überprüfen, welche Komponente das Ereignis ausgelöst hat. Diesen Parameter kannst du dann auch an andere Funktionen weitergeben.

tommie-lie 5. Apr 2004 20:57

Re: Welcher Timer
 
Wenn die Timer alle das gleiche Event haben, bringt es recht wenig, daß irgendwie fest in das Timer-Event einzutragen.
Stattdessen kriegt jedes VCL-Event glücklicherweise das Objekt "Sender".
Wenn du also nur die Nummer haben willst, kannst du das Tag-Property der Timer missbrauchen und in jedes der Reihe nach Zahlen eintragen und dann mit
Delphi-Quellcode:
'Ich bin Timer: '+ IntToStr(Sender.Tag)
an die Zahl rankommen, oder, wenn dir auch der Name des Timers (Bsp: Timer1) genehm ist, mit
Delphi-Quellcode:
 'Ich bin Timer: '+ IntToStr(Sender.Name)
.

P.S.: Ich bin mir nicht sicher, ab welcher Klasse es den Namen und den Tag gibt, aber in TObject dürften sie beide eigentlich schon drin sein. Wenn nicht, hilft ein cast nach TTimer (sofern das Event immer von einem Timer aufgerufen wird und nicht von was anderem oder du nur den Namen oder nur den Tag brauchst. Wenn nicht, müsstest du einen entsprechenden gemeinsamen Klassenvorfahren finden...).

alcaeus 5. Apr 2004 20:59

Re: Welcher Timer
 
Zitat:

Zitat von tommie-lie
Delphi-Quellcode:
'Ich bin Timer: '+ IntToStr(Sender.Name)

So geht das leider nicht...:warn: so
Delphi-Quellcode:
'Ich bin Timer: '+Sender.Name
geht das schon eher...

himitsu 5. Apr 2004 21:01

Re: Welcher Timer
 
Zitat:

Zitat von tommie-lie
P.S.: Ich bin mir nicht sicher, ab welcher Klasse es den Namen und den Tag gibt...

Name gibt es überall.

Aber wenn ich das richtig im Köpfchen hab, hat TObject Tag nicht drin.

tommie-lie 5. Apr 2004 21:08

Re: Welcher Timer
 
Zitat:

Zitat von alcaeus
So geht das leider nicht...:warn: so
Delphi-Quellcode:
'Ich bin Timer: '+Sender.Name
geht das schon eher...

Hmpf...

@himitsu: In letzter Zeit mache ich so wenig mit Delphi, ich hab' die Objekthierarchie der VCL schon lange nicht mehr im Kopf. Ich weiß noch, daß der Button was ist, wo man draufklicken kann :mrgreen:

himitsu 5. Apr 2004 21:23

Re: Welcher Timer
 
[OT]Na dann schämm dich :warn: :P [/OT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz