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

Langage Delphi Discussion :

Question basique Delphi


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut Question basique Delphi
    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
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
     
    type
      TForm1 = class(TForm)
        Timer1: TTimer;
        procedure Timer1Timer(Sender: TObject);
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      beep;
    end;
     
    end.

    Qu'est-ce qui relie l’événement Timer1Timer au composant Timer1?

    J'ai toujours pris pour acquis qu'il était relié sans me poser de question. Mais où se fait le lien? Je sais bien que l'entête de la procédure apparait quand je double-clic sur le composant déposé sur la fiche, ou dans l'inspecteur d'objet, lorsque je clique sur OnTimer.

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 091
    Points : 41 069
    Points
    41 069
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Basiquement, l'évènement est déclenché lorsque le temps est écoulé.

    Dans ton code si le timer est actif, tu auras un Beep tous les intervalles de temps (indiqués en millisecondes) + le temps de l'action à proprement parlé

    par exemple : j'ai utilisé un Timer pour faire une série d'actions (ouvertures de requêtes) et pour faire patienter l'utilisateur j'affiche une liste des tâches cochées au fur et à mesure . la variable etape me permet d'arrêter le traitement (etape=0) ou de continuer (inc(etape)).

    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
    69
    70
    71
    72
    procedure TMainClients.DeroulementTimer(Sender: TObject);
    {-----------------------------------------------------------------------------
      Procedure: DeroulementTimer
      Auteur:    Serge
      Date:      09-janv.-2016
      Objectif:  Ouverture du programme, liste des tâches pour faire patienter
      Arguments: Sender: TObject
      Resultat:  None
    -----------------------------------------------------------------------------}
    begin
    Deroulement.Enabled:=False; // arrêt du timer le temps de l'action
    case etape of
      1 : begin // Récupération fichier ini
           if Datas.LoadSettings=0
               then begin
                    etape1.IsChecked:=true;
                    inc(etape);
               end
               else etape:=0;
          end;
      2 : begin  // connexion base de données
          if Datas.Connexion
           then
           with Datas do begin
            Etape2.IsChecked:=true;
            FDQClients.Active:=True;
            FDQClients.FetchAll;
            FDClients.Data:=FDQClients.Data;
            FDQClients.Active:=False;
            inc(Etape);
           end
           else etape:=0;
         end;
      3 : begin  // vérification mise à jour dispo
           etape3.IsChecked:=true;
           inc(etape);
          end;
      4 : begin   // récupération des données
           BeginUpdate;
           Transparency:=False;
           Demarrage.Visible:=False;
           MainLayout.Visible:=True;
           Position:=TFormPosition.Designed;
           top:=Datas.Preferences.screentop;
           left:=Datas.Preferences.screenleft;
           height:=Datas.Preferences.screenheight;
           width:=Datas.Preferences.screenwidth;
           Fill.Kind:=TBrushKind.None;
           if datas.aConfigurer>0
              then BtnSettingsClick(Sender);
           etape:=0;
           with Datas do
            begin
             if not Preferences.lastRecherche.IsEmpty then
              begin
                FDClients.Filtered:=False;
                FDClients.Filter:=Preferences.lastRecherche;
                FDClients.Filtered:=True;
                FDClients.First;
              end;
             if not Preferences.lastClient.isEmpty then
              begin
                FDClients.Locate('NUM_CLIENT',Datas.Preferences.lastClient,[]);
              end;
              FDClient.Active:=True;
              FDLivraisons.Active:=True;
            end;
            EndUpdate;
          end;
    end;
    //redémarrage du timer 
    if etape>0 then Deroulement.Enabled:=true;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 396
    Points : 640
    Points
    640
    Par défaut
    je ne sais pas si je comprend la question mais la connexion est enregistré dans le fichier .dfm

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 745
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 745
    Points : 13 306
    Points
    13 306
    Par défaut
    Le composant Timer crée une fenêtre invisible qui a pour seul but de recevoir le message WM_TIMER. C'est ce gestionnaire de messages qui invoque ensuite l'événement OnTimer (à travers une procédure de contrôle).

    Un événement n'est rien d'autre qu'un callback orienté objet et l'EDI est suffisamment sympa pour générer son squelette et initialiser la variable procédurale correspondante du composant (l'événement) sur simple double-clique

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par exoseven Voir le message
    je ne sais pas si je comprend la question mais la connexion est enregistré dans le fichier .dfm
    je pense aussi que c'est le sens de la question

    donc tout se passe dans la classe TForm (et dans TFrame aussi d'ailleurs) qui, lors de sa création, recherche une ressource portant son nom (TForm1 -> 'TFORM1'). La ressource c'est le DFM compilé, et grâce aux RTTI (Runtime Type Information) Delphi est capable de renseigner les propriétés de la fiche d'après ce qu'il y a dans le DFM, donc Timer1 sera un objet TTimer créé automatiquement, et sa propriété OnTimer pointera sur la méthode Timer1Timer.

    Voir aussi mon article sur les DFM
    http://lookinside.free.fr/delphi.php?Delphi+et+les+DFM
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Merci pour vos réponses

    C'est exactement ce que je voulais savoir

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

Discussions similaires

  1. Question Basique Gestion Erreur VBA ...
    Par Le_Phasme dans le forum Access
    Réponses: 2
    Dernier message: 11/10/2005, 13h42
  2. Question basique
    Par PatLeOuf dans le forum C++
    Réponses: 1
    Dernier message: 23/03/2005, 10h57
  3. Réponses: 5
    Dernier message: 04/03/2005, 12h14

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