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

Delphi Discussion :

[Delphi 7] Programmation événementielle


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 176
    Points : 123
    Points
    123
    Par défaut [Delphi 7] Programmation événementielle
    Bonjour à tous.
    En fait, je demande plus une aide à mieux comprendre la programmation événementielle qu'une solution à mon problème.
    Voici mon problème:
    dans un événement OnClick, j'ai une boucle qui, à chaque passage, effectue un travail (recopie d'un fichier dans un dossier). Je souhaite visualiser un compte-rendu pour chaque passage. Si je place ce compte-rendu dans un ShowMessage, pas de problème, ça marche, mais c'est inélégant (obligation de valider le message affiché). Si je place ce compte-rendu dans un Label.Caption ou dans un Edit.Text (ce que j'aimerais bien faire), seul le compte-rendu du dernier passage s'affiche (et ceci en sortie de l'événement OnClick). J'ai essayé un Refresh dans la boucle, ça ne marche pas.
    En fait, j'ai résolu mon problème via une séquence Memo1.Clear - Memo1.Lines.Add('le compte-rendu').
    Question : pourquoi les solutions Label.Caption ou Edit.Text ne fonctionnent-elles pas à chaque passage ?
    D'avance merci.
    Cordialement.
    Alain
    Ce qui est simple et évident pour soi-même ne l'est pas forcément pour les autres... et réciproquement !

  2. #2
    Membre du Club Avatar de Guennec.Yannick
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 50
    Points : 60
    Points
    60
    Par défaut
    Je pense que la boucle s'effectue trop rapidement pour que tu puisses voir les différents affichage dans une textbox. Essaie de mettre une tempo eventuellement avant le passage à la boucle suivante
    Sans analyse, la technique n'est rien.

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par alainvh
    Bonjour à tous.
    En fait, je demande plus une aide à mieux comprendre la programmation événementielle qu'une solution à mon problème.
    Voici mon problème:
    dans un événement OnClick, j'ai une boucle qui, à chaque passage, effectue un travail (recopie d'un fichier dans un dossier). Je souhaite visualiser un compte-rendu pour chaque passage. Si je place ce compte-rendu dans un ShowMessage, pas de problème, ça marche, mais c'est inélégant (obligation de valider le message affiché). Si je place ce compte-rendu dans un Label.Caption ou dans un Edit.Text (ce que j'aimerais bien faire), seul le compte-rendu du dernier passage s'affiche (et ceci en sortie de l'événement OnClick). J'ai essayé un Refresh dans la boucle, ça ne marche pas.
    En fait, j'ai résolu mon problème via une séquence Memo1.Clear - Memo1.Lines.Add('le compte-rendu').
    Question : pourquoi les solutions Label.Caption ou Edit.Text ne fonctionnent-elles pas à chaque passage ?
    D'avance merci.
    Cordialement.
    Alain
    Selon le temps de copie de tes données, ca peut être plus ou moins rapide et donc tu ne verras rien s'afficher.
    Sinon, le problème dans ce genre de cas, c'est que le programme ne laisse pas passer les messages windows (notamement celui de rafraichissement de la fenêtre et donc du label).

    En général on code de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For i := 0 to 500 do
    begin
      Sleep(1000); // petite tempo juste pour le test
      Label1.caption := intToStr(i);
      Application.ProcessMessages; // Permet à l'application de laisser passer les messages windows
    end;
    Essai avec et sans le Application.processMEssages tu verras la différence dans l'affichage
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 176
    Points : 123
    Points
    123
    Par défaut
    Merci à tous pour vos réponses.
    C'est Malatar qui remporte la timbale ! C'est en effet l'instruction Application.ProcessMessages (que je ne connaissais pas) qui résoud ma difficulté : ce n'est ni un pb de concaténation, ni de vitesse : j'ai d'ailleurs essayé sans Slip - pardon, sans Sleep - et mon application marche bien.
    Bien cordialement.
    Alain

    PS pour Malatar : je conserve un bon souvenir de Pont St Esprit, lors d'un mariage sur le bord du Rhône !
    Ce qui est simple et évident pour soi-même ne l'est pas forcément pour les autres... et réciproquement !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/08/2007, 19h42
  2. Programmation évènementiel sous mySQL
    Par ndiayebass dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/07/2007, 09h25
  3. Delphi 6 Programmation Objet
    Par eultartuffe dans le forum Delphi
    Réponses: 18
    Dernier message: 04/05/2007, 19h23
  4. Programmation évènementielle
    Par nicolas666 dans le forum C++
    Réponses: 5
    Dernier message: 31/01/2006, 09h37

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