Delphi-PRAXiS

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 timer zu fuß einbinden (https://www.delphipraxis.net/81255-timer-zu-fuss-einbinden.html)

benicz 23. Nov 2006 14:27


timer zu fuß einbinden
 
hallo leuts!

ich versuche, einen timer in mein programm einzubinden, möchte ihn aber nicht auf dem formular platzieren.

mit
Delphi-Quellcode:
timer1:=TTimer.create...
habe ich ihn erzeugt und kann auch ganz toll das intervall einstellen.
aber ich bekomme ihm einfach zum verrecken keine prozedur zugewiesen!

ich hatte schon einen (fast) passenden thread gesichtet, finde ihm aber nicht mehr und außerdem klärte er das problem nicht zu ende.

ich bekomme den fehler
[Pascal Fehler] UTools.pas(22): E2010 Inkompatible Typen: 'TNotifyEvent' und 'procedure, untyped pointer or untyped parameter'

das kann doch nicht so schwer sein!

danke schonmal

Luckie 23. Nov 2006 14:32

Re: timer zu fuß einbinden
 
So:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    i: Integer;
    Timer: TTimer;
    procedure TimerCallback(Sender: TObject);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  i := 0;
  Timer := TTimer.Create(Form1);
  Timer.Interval := 1000;
  Timer.OnTimer := TimerCallback;
end;

procedure TForm1.TimerCallback(Sender: TObject);
begin
  Inc(i);
  Caption := IntToStr(i);
end;

SirThornberry 23. Nov 2006 14:32

Re: timer zu fuß einbinden
 
du versuchst eine ganz normale Funktion zu zuweisen. Es muss aber eine Methode von einem Object sein:

so nicht
Delphi-Quellcode:
procedure DeineMethode(Sender: TObject);
begin

end;
sondern so
Delphi-Quellcode:
procedure TKlasse.DeineMethode(Sender: TObject);
begin

end;
Hintergrund: Bei einer Methode (also eine Procedure welche zu einem Object gehört) wird noch der unsichtbare Self-Paramter mitgegeben. Wenn du nun versuchst das ganze auf eine normale Procedure anzuwenden stimmt die Anzahl der Paramter nicht weil intern folgendes erwartet wird
Delphi-Quellcode:
procedure DeineMethode(Self: TObject; Sender: TObject);
begin

end;

benicz 24. Nov 2006 14:35

Re: timer zu fuß einbinden
 
danke schonmal!

@luckie:
das ist ja genau das, was ich nicht machen will...
der timer soll nicht zum form gehören.

ich bilde mir ein, das schonmal versucht zu haben, ohne erfolg...
allerdings hatte ich die methode in einer klasse, die ich schon für einen ähnlichen fall gebaut hatte.

vielleicht klappt's ja, wenn ich dafür eine eigene nehme...


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