Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TTimer.OnTimer ersetzen (https://www.delphipraxis.net/72247-ttimer-ontimer-ersetzen.html)

fLaSh11 27. Jun 2006 16:55


TTimer.OnTimer ersetzen
 
Hallo,

ich habe folgendes Problem (wie kann ich es am einfachsten lösen?):

Ich habe eine Unit gemacht und ein Timer "created" :stupid:.
Nun will ich als Timer1.OnTimer eine selbst gemachte Prozedur setzen, wie geht das?

//Edit: ich habe keine Lust ein TNotifyEvent zu machen, etc.
:wiejetzt:

Für schnelle Hilfe bin ich immer dankbar! :wink:

mkinzler 27. Jun 2006 16:57

Re: TTimer.OnTimer ersetzen
 
Und warum nicht? Du brauchst doch nur eine Methode mit der selben Signatur erzeugen und diese der Property zuweisen.

fLaSh11 27. Jun 2006 17:00

Re: TTimer.OnTimer ersetzen
 
ich wollte es so machen:
Delphi-Quellcode:
//...
Timer1.OnTimer:=func1;
//...

procedure func1;
begin
  //blah
end;
so funzt es nicht! Was muss ich ergänzen? :)

Neutral General 27. Jun 2006 17:01

Re: TTimer.OnTimer ersetzen
 
Delphi-Quellcode:
type
 TForm1 = class(TForm)
  ...
  public
   procedure Timern(Sender: TObject);
 end;
 
var
 ATimer: TTimer;

procedure TForm1.Timern(Sender: TObject);
begin
 // Irgendwas;
end;

procedure Wasweißich;
begin
ATimer := TTimer.Create(*Parameter?!*);
ATimer.Intervall := 100;
ATimer.OnTimer := Timern;
end;
Meinst du das ? :)

Gruß
Neutral General

fLaSh11 27. Jun 2006 17:04

Re: TTimer.OnTimer ersetzen
 
achso, muss es eine public procedure sein, ich habe nämlich leider keine Form in meiner Unti deklariert...

Neutral General 27. Jun 2006 17:08

Re: TTimer.OnTimer ersetzen
 
Ich glaube schon :(
Ich habs mal ohne probiert und es ging nicht.. aber das geht mit Sicherheit auch ohne das die Procedure in einer Klasse drin ist .. oder ?

mkinzler 27. Jun 2006 17:12

Re: TTimer.OnTimer ersetzen
 
Zitat:

achso, muss es eine public procedure sein, ich habe nämlich leider keine Form in meiner Unti deklariert...
Es muß ne Methode sein. Die Klasse ist egal du kannst auch eine Dummy-Klasse mit einer Methode mit TNotifyEvent-Signatur erzeuge und diese zuordnen.

SirThornberry 27. Jun 2006 17:13

Re: TTimer.OnTimer ersetzen
 
es muss nicht im Public sein, aber es muss auf jeden Fall eine Methode (Procedure eines Objectes) sein.
Wenn du kein Form hast, hast du dann wenigstens eine Nachrichtenschleife? Ansonsten arbeitet der Timer auch nicht richtig.
Im übrigen kannst du dir auch eine Hilfsklasse schreiben.
Delphi-Quellcode:
type
  THelpClass = class(TObject)
  public
    procedure TimerEventProc(Sender: TObject);
  end;
[...]
procedure THelpClass.TimerEventProc(Sender:TObject)
begin
  //Do something
end;
[...]
helpinstance := THelpClass.Create;
Timer.OnTimer = helpinstance.TimerEventProc;
Es gibt auch eine Möglichkeit ohne Methode. Dabei sollte man jedoch wissen das man macht. Und wenn man das weiß kommt man selbst auf die Idee. (Man sollte wissen was der Intern der Unterschied zwischen einer Methode und einer Procedure ist)

alleinherrscher 27. Jun 2006 17:14

Re: TTimer.OnTimer ersetzen
 
Sagt mal, wenn man ne Unit ohne Form hat: TTimer.Create erwartet als Parameter TComponent. Was gebe ich ihm da an? Kann ich das einfach durch "NIL" ersetzten?

SirThornberry 27. Jun 2006 17:15

Re: TTimer.OnTimer ersetzen
 
genau, einfach nil übergeben. Der Owner dient ja lediglich dazu das die Komponente automatisch zerstört wird bzw. per FindComponent gefunden wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 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