IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Création d'un événement dynamique sur Timer [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Points : 61
    Points
    61
    Par défaut Création d'un événement dynamique sur Timer
    Bonjour,

    J'aimerais réaliser un petit programme (non graphique) qui utilise un timer... J'ai beau rechercher sur internet, je ne vois pas comment faire.
    Au niveau de la déclaration je pense que je suis sur la bonne voie, mais pour affecter dynamiquement l'événement OnTimer à l'objet TFPTimer, là, je sèche.

    Voilà ce que j'ai fait, si quelqu'un peut me donner des pistes pour affecter l’événement au timer, ce serait sympa...
    (Je ne suis même pas certain que je sois obligé de déclarer le type TTps...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    program Project1;
     
    {$mode objfpc}{$H+}
     
    uses
      {$IFDEF UNIX}{$IFDEF UseCThreads}
      cthreads,
      {$ENDIF}{$ENDIF}
      Classes, fptimer
      { you can add units after this };
    type TTps = class(TFPTimer)
     
    end;
     
    var tps : TTps;
     
    begin
       try
          tps := TTps.Create(nil);
          writeln('Avant Timer :');
          tps.Interval:=30000;
          tps.Enabled:=true;
     
          writeln('Apres timer :');
       finally
              tps.Free;
       end;
     
     
    end.
    Merci

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    hello,
    dans le répertoire de lazarus lazarus_xxxx\fpc\x.x.x\source\packages\fcl-base\examples il y a un exemple d'utilisation d'un timer sous un programme console (testtimer.pp)
    voici son contenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    {$mode objfpc}
    {$H+}
    program testtimer;
     
    uses 
    {$ifdef unix}
      cthreads,
    {$endif}
      sysutils,classes,custapp,fptimer;
     
    Type
      TTestTimerApp = Class(TCustomApplication)
      Private
        FTimer : TFPTimer;
        FCount : Integer;
        FTick : Integer;
        N : TDateTime;
      Public  
        Procedure DoRun; override;
        Procedure DoTick(Sender : TObject);
      end;
     
    Procedure TTestTimerApp.DoRun; 
     
    begin
      FTimer:=TFPTimer.Create(Self);
      FTimer.Interval:=100;
      FTimer.OnTimer:=@DoTick;
      FTimer.Enabled:=True;
      Try
        FTick:=0;
        FCount:=0;
        N:=Now;
        While (FCount<10) do
          begin
          Inc(FTick);
          Sleep(1);
          CheckSynchronize; // Needed, because we are not running in a GUI loop.
          end;
      Finally
        FTimer.Enabled:=False;
        FreeAndNil(FTimer);
      end;
      Terminate;
    end;
     
    Procedure TTestTimerApp.DoTick(Sender : TObject);
     
    Var
      D : TDateTime;
     
    begin
      Inc(FCount);
      D:=Now-N;
      Writeln('Received timer event ',FCount,' after ',FTick,' ticks. (Elapsed time: ',FormatDateTime('ss.zzz',D),')');
      FTick:=0;
      N:=Now;
    end;
     
     
    begin
      With TTestTimerApp.Create(Nil) do
        Try
          Run
        finally
          Free;
        end;  
    end.
    L'affectation de la procédure appelée par le timer se fait par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FTimer.OnTimer:=@DoTick;
    ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Points : 61
    Points
    61
    Par défaut
    Merci beaucoup ! Je n'ai pas du tout pensé à regarder ici

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. representer des evenements dynamiques sur un globe 3d
    Par fg006 dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 18/08/2011, 18h17
  2. evenement dynamique sur Document
    Par shabaninonda dans le forum ASP.NET
    Réponses: 5
    Dernier message: 25/08/2008, 18h08
  3. Réponses: 1
    Dernier message: 02/11/2007, 14h06
  4. Probleme ListBox sur evenement Tick du Timer
    Par MadCat34 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 12/01/2007, 16h28
  5. Réponses: 1
    Dernier message: 25/04/2006, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo