Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Timer eigene Prozedur als Event zuweisen (https://www.delphipraxis.net/91911-timer-eigene-prozedur-als-event-zuweisen.html)

ManuMF 11. Mai 2007 19:23


Timer eigene Prozedur als Event zuweisen
 
Hallo,

ich habe einen Timer erstellt und möchte ihm nun eine Prozedur
Delphi-Quellcode:
procedure EndeSenden(Sender: TObject);
als Timer-Event zuweisen. An der Stelle
Delphi-Quellcode:
EndeSender.onTimer := EndeSenden;
komm ich aber wegen inkompatiblen Typen 'Methodenzeiger und reguläre Prozedur' nicht weiter. Wie muss das richtig lauten?

Danke,
ManuMF

mkinzler 11. Mai 2007 19:24

Re: Timer eigene Prozedur als Event zuweisen
 
Event-Properties erwarten Methoden und keine Prozeduren.

ManuMF 11. Mai 2007 19:26

Re: Timer eigene Prozedur als Event zuweisen
 
wie hilft mir das weiter?

mkinzler 11. Mai 2007 19:27

Re: Timer eigene Prozedur als Event zuweisen
 
Delphi-Quellcode:
procedure <Klasse>.EndeSenden(Sender: TObject);

ManuMF 11. Mai 2007 19:35

Re: Timer eigene Prozedur als Event zuweisen
 
Sorry, aber wenn ich das genau wüsste, würde ich nicht fragen.

Welche Klase kann ich hier verwenden?

Falls das nicht klar sein sollte: Es ist ein ganz gewöhnlicher Timer, hier nochmal etwas mehr Code:
Delphi-Quellcode:
var EndeSender: TTimer;

initialization
   EndeSender := TTimer.Create;
   with EndeSender do
   begin
      ...
      onTimer := EndeSenden;
   end;

mkinzler 11. Mai 2007 19:39

Re: Timer eigene Prozedur als Event zuweisen
 
Jede beliebige. es muß halt nur eine Methode sein, z.B. auch eine Formularklasse.

DelphiProgrammierer 11. Mai 2007 19:57

Re: Timer eigene Prozedur als Event zuweisen
 
Die Prozedur muss eine Methode sein, wie z.B. in folgendem Beispiel:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,StdCtrls,ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    myTimer : TTimer;
    procedure TimerBenachrichtigung(sender:TObject);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
  myTimer := TTimer.Create(self);
  myTimer.OnTimer := TimerBenachrichtigung;
end;

procedure TForm1.TimerBenachrichtigung(sender: TObject);
begin
  { tue irgendwas }
end;

end.
Zitat:

Zitat von ManuMF
Sorry, aber wenn ich das genau wüsste, würde ich nicht fragen.

Welche Klase kann ich hier verwenden?

Falls das nicht klar sein sollte: Es ist ein ganz gewöhnlicher Timer, hier nochmal etwas mehr Code:
Delphi-Quellcode:
var EndeSender: TTimer;

initialization
   EndeSender := TTimer.Create;
   with EndeSender do
   begin
      ...
      onTimer := EndeSenden;
   end;


ManuMF 11. Mai 2007 19:59

Re: Timer eigene Prozedur als Event zuweisen
 
Da liegt das Problem. Ich habe kein Formular zur Verfügung und verwende auch sonst keine selbst erzeugte Klasse.

Apollonius 11. Mai 2007 20:00

Re: Timer eigene Prozedur als Event zuweisen
 
Dann musst du dir eine Klasse erstellen - ohne instanziierte Klasse keine Methode.

edit: An die Spezialisten: Könnte man vielleicht doch eine normale Prozedur schreiben, die als ersten Parameter ein TObject erfordert und den Compiler mit Pointern darüber hinwegtäuschen, dass es gar keine Methode ist?

ManuMF 11. Mai 2007 20:04

Re: Timer eigene Prozedur als Event zuweisen
 
Zitat:

Zitat von Apollonius
ohne instanziierte Klasse keine Methode.

OK, dann schau ich mal, ob ich es so mache. Habe nämlich gerade etwas gefunden, was den Timer eventuell überflüssig macht.


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