Avatar billede blackbyte Nybegynder
16. maj 2002 - 10:29 Der er 5 kommentarer

Tildele en procedure en event

Jeg har en unit med en timer, og opsætningen ser nogenlunde sådan her ud:

TEnClass = class
  private
    procedure TrigTimer(Sender: TObject);
end;

var
  TheTimer: TTimer;
  Hej: TEnClass;

implementation

procedure Hej.TrigTimer(Sender; TObject);
begin
  ShowMessage('hej');
end;

initialization
Hej := TEnClass.Create;
TheTimer := TheTimer.Create(nil)
TheTimer.OnTimer := Hej.TrigTimer;

end.



dette er en 'rå'skitse af hvad jeg skal bruge hjælp til...

problemet er, at når jeg starter timeren, og intervallet er gået, så 'trigger' den ikke min TrigTimer-procedure...

Hvorfor?
Avatar billede doc404 Novice
16. maj 2002 - 13:14 #1
En ting...

Initialization
  Hej := TEnClass.Create;
  TheTimer := TTimer.Create(nil);  <--- !
  TheTimer.Interval := 2000;        <--- 2sekunder
  ...
Avatar billede lokeutgaard Nybegynder
16. maj 2002 - 13:53 #2
Type
  TEnClass = Class
  private
    procedure TrigTimer(Sender: TObject);
  end;

var
  TheTimer: TTimer;
  Hej: TEnClass;

implementation

procedure TEnClass.TrigTimer(Sender: TObject);
begin
  ShowMessage('hej');
end;

Initialization
  Hej := TEnClass.Create;
  TheTimer := TTimer.Create(nil);
  TheTimer.OnTimer := Hej.TrigTimer;
End.
Avatar billede blackbyte Nybegynder
16. maj 2002 - 18:25 #3
Jeg sagde det kun var en skitse...
Problemet er ikke simi-kolon-fejl, og triggeren er sat til 30000 ms
Problemet er, at den ikke trigger min funktion når tiden er gået
Avatar billede tormork Nybegynder
16. maj 2002 - 23:10 #4
Har du sagt. TheTimer.Enabled := true; ellers kommer der ikke nogen event.
Avatar billede doc404 Novice
17. maj 2002 - 00:03 #5
Dette her virker og er testet... Du får en bunke messageboxe

tormork -> enable sættes default til true i TTimer.Create

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
  private
  public
  end;
TEnClass = class
  private
    procedure TrigTimer(Sender: TObject);
end;

var
  Form1: TForm1;
TheTimer: TTimer;
  Hej: TEnClass;

implementation

{$R *.DFM}

procedure TEnClass.TrigTimer(Sender: TObject);
begin
  ShowMessage('hej');
end;

initialization
  Hej := TEnClass.Create;
  TheTimer := TTimer.Create(nil);
  TheTImer.Interval := 5000;
  TheTimer.OnTimer := Hej.TrigTimer;
end.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester