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 :

événement non pris en compte


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 80
    Par défaut événement non pris en compte
    Bonjour,
    Dans une application, j'ai une procédure qui dure un peu envir (1mn). Hors pendant ce temps, un événement par l'appui sur un bouton n'est pas pris en compte par le programme.
    Comment puis-je faire pour ne pas être obligé d'attendre la fin de la procédure pour faire l'impulsion sur le BP
    Merci d'avance pour vos conseils

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Citation Envoyé par BECHE Voir le message
    Bonjour,
    Dans une application, j'ai une procédure qui dure un peu envir (1mn). Hors pendant ce temps, un événement par l'appui sur un bouton n'est pas pris en compte par le programme.
    Comment puis-je faire pour ne pas être obligé d'attendre la fin de la procédure pour faire l'impulsion sur le BP
    Merci d'avance pour vos conseils
    Le plus simple, tu mets un ProcessMessage dans ton travail qui dure 1 Minute.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ProcessMessage;

  3. #3
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    je suis curieux de voir la procédure en question...
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  4. #4
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 142
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 142
    Par défaut
    Citation Envoyé par Dr.Who Voir le message
    je suis curieux de voir la procédure en question...
    Ben Dr.Who, t'as cassé ta boule de cristal ?

    Pas de panique, c'est à cause de la neige,

  5. #5
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Salut les copains et bananée

    Dans une application, j'ai une procédure qui dure un peu envir (1mn). Hors pendant ce temps, un événement par l'appui sur un bouton n'est pas pris en compte par le programme.
    Même idée que notre toubib...

    Réponse complémentaire : pas possible de threader cette proc ?

    @+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 80
    Par défaut
    Bonjour,
    Merci de vos diverses réponses et commentaires qui m'ont permis d'y voir un peu plus clair.
    En fait j'avais rendu inactif mon bouton pendant le déroulement de ma procédure A qui dure plus d'1 mn ceci pour éviter un conflit entre la procédure A et la procédure engendrée par l'événement sur le BP
    J'avais donc décider de laisser terminer la procédure A avant de pouvoir agir sur mon BP
    Cette procedure A dure tout ce temps car elle active et désactive plusieurs fois une sortie du port paralléle (ouverture saccadée d'une vanne) avec une attente entre chaque commande par une procédure d'attente appelée plusieurs dans la procédure A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     procedure wait (ms:integer);
     var
     debut,durée:cardinal;
     begin
     debut:=gettickcount;
     durée:=0;
      While durée <= ms do
        begin
        Application.ProcessMessages;
        sleep(100);
        durée:= gettickcount-debut;
        end;
     end;
    qui possède bien le "Application.ProcessMessages"
    C'est la solution (désactiver mon BP) que j'avais trouvé lors de l'écriture de mon programme.
    En réalité, j'ai plutôt besoin de faire un exit d'une procédure mais via une autre procédure. Comment procède t-on ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 49
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    Le plus simple, tu mets un ProcessMessage dans ton travail qui dure 1 Minute.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ProcessMessage;
    Non le plus simple c'est de mettre 'le travail qui dure une minute' dans un TThread. ( cf la bible sur le sujet: 'le travail qui dure une minute, mieux le comprendre et comment le gérer' aux éditions Springer...)

  8. #8
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure Wait(const MS: LongWord);
    var
      E : LongWord;
    begin
      E := GetTickCount+MS;
      repeat
         Application.ProcessMessages;
      until GetTickCount >= E;
    end;
    ou un timer, qui peut être presque précis avec un temp >1s
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TForm1.Wait(const MS: LongWord);
    begin
      Timer.interval:=ms;//avec ms>1s 
      Timer.enable:=True;
    end;
    Procedure TForm1.OnTimer;
    begin
          Timer.Enable:=False;
          FiareQuelquechose; 
    end;

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 80
    Par défaut
    Bonsoir, et merci pour les conseils
    Encore 2 petite question.
    Existe-t-il une commande pour sortir d'une procédure en cours sous l'action d'un événement extérieur donc une autre procédure ?

  10. #10
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Citation Envoyé par BECHE Voir le message
    Bonsoir, et merci pour les conseils
    Encore 2 petite question.
    Existe-t-il une commande pour sortir d'une procédure en cours sous l'action d'un événement extérieur donc une autre procédure ?
    En gros, pour faire le plus simple possible, cela se passe par Boolean style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [...]
      // La proc dont tu souhaites "sortir" si...
      if Stop then exit;
    [...]
    Mais chaque cas est différent, et pas spécialement aussi simple à résoudre.

    @+

Discussions similaires

  1. [QR 4.05] Propriété imprimante non pris en compte
    Par portu dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 30/09/2008, 14h21
  2. CSS non pris en compte
    Par DragOr dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 08/06/2006, 13h18
  3. [ASE][SQL]WHERE non pris en compte
    Par Benjamin78 dans le forum Sybase
    Réponses: 1
    Dernier message: 24/03/2006, 12h00
  4. Accents non pris en compte dans les requêtes SELECT
    Par YanK dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/08/2005, 10h57
  5. [event] keyListener non pris en compte
    Par pierre.zelb dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 03/08/2005, 08h35

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