AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Welcher Timer

Ein Thema von ThunderX86 · begonnen am 5. Apr 2004 · letzter Beitrag vom 6. Apr 2004
Antwort Antwort
Seite 1 von 2  1 2      
ThunderX86

Registriert seit: 4. Apr 2004
Ort: Wien
9 Beiträge
 
Delphi 7 Enterprise
 
#1

Welcher Timer

  Alt 5. Apr 2004, 21:37
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.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#2

Re: Welcher Timer

  Alt 5. Apr 2004, 21:39
pack es doch einfach mit in das OnTime event
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Welcher Timer

  Alt 5. Apr 2004, 21:52
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.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Welcher Timer

  Alt 5. Apr 2004, 21:55
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;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: Welcher Timer

  Alt 5. Apr 2004, 21:56
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.
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#6

Re: Welcher Timer

  Alt 5. Apr 2004, 21:57
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 'Ich bin Timer: '+ IntToStr(Sender.Tag) an die Zahl rankommen, oder, wenn dir auch der Name des Timers (Bsp: Timer1) genehm ist, mit  '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...).
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: Welcher Timer

  Alt 5. Apr 2004, 21:59
Zitat von tommie-lie:
'Ich bin Timer: '+ IntToStr(Sender.Name)
So geht das leider nicht... so
'Ich bin Timer: '+Sender.Name geht das schon eher...
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

Re: Welcher Timer

  Alt 5. Apr 2004, 22:01
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.
$2B or not $2B
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#9

Re: Welcher Timer

  Alt 5. Apr 2004, 22:08
Zitat von alcaeus:
So geht das leider nicht... so
'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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

Re: Welcher Timer

  Alt 5. Apr 2004, 22:23
[OT]Na dann schämm dich [/OT]
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 Uhr.
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