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

C++Builder Discussion :

message box avec delay


Sujet :

C++Builder

  1. #1
    Membre confirmé Avatar de supersoft5
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Par défaut message box avec delay
    salut a tous les developpeurs,
    moi je veux developper un systéme qui ne s'arrete pas dans le temps, c'est a dire qu'un certain moment j'affiche a l'utilisateur pour effectuer un choix (oui ou non) mais je dois faire un delay dans le non comment faire? histoire que si l'utlisateur n'est pas devant son PC pour que le systeme ne s'arrete pas
    merci d'avance

  2. #2
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Par défaut
    Bonjour,

    je pense qu'à l'ouverture de la boite de dialogue, j'enclencherai un TTimer.
    Celui-ci enverrai après écoulement du temps imparti, un message WM_KEYDOWN avec le code du bouton "Annuler".
    L'utilisation de la procédure Perform() est bien expliquée dans l'aide.

  3. #3
    Membre confirmé Avatar de supersoft5
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Par défaut affichage du temps a l'utilisateur
    merci pour la reponse,
    mais est ce que sur le boutton "non" par exemple il sera affiché le temps en decrementation pour que l'utilisateur le voit?
    c'est ce que je veux faire
    encore merci

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour,
    Avec une boite de dialogue classique, cela me semble peu probable (mais je peut me tromper).
    Il te faudrait gérer toi même soit une TForm, soit un objet dérivé qui corresponde a tes besoins.

    Bon courage,
    @ +

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut supersoft5:
    on peut afficher un nombre sur le Caption du boutton, mais je n'ai pas reussi a afficher une chaine et un nombre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int a = 10;
    Button1->Caption = a;
    C'est a adapter bien sur suivant ses besoins.

  6. #6
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Par défaut
    Bonjour,

    effectivement, je crois qu'il faut utiliser une boite TForm personnelle pour pouvoir y mettre un bouton "NON" gérable entièrement.
    Dans ce cas, il est possible d'y mettre le texte que l'on veut.

    Dans la boucle d'attente, il ne faudra pas oublier de mettre un Application->ProcessMessage de façon à permettre à Windows de raffraichir graphiquement le texte du bouton.

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    Voici un exemple pour gérer une MessageBox avec délai.
    Dans cet exemple, on affiche une MessageBox quand on clique sur un bouton.
    On laisse 10 secondes à l'utilisateur pour intervenir en affichant le temps restant:

    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
    // STATIC window control ID pour une message box
    #define ID_MSGBOX_STATIC_TEXT    0x0000ffff
    //////////////////////////////////////////////////////////////////////////////
     
     
    VOID WINAPI MsgBoxTimeout(PVOID pvContext, BOOLEAN fTimeout) {
     
       HWND hwnd = FindWindow(NULL, Form1->szCaption.c_str());
     
       if (hwnd != NULL)
       {
          // La fenêtre existe; met à jour le temps restant
          TCHAR sz[100];
          wsprintf(sz, TEXT("Vous avez %d secondes pour répondre"), Form1->nSecLeft--);
          SetDlgItemText(hwnd, ID_MSGBOX_STATIC_TEXT, sz);
     
          if (Form1->nSecLeft == 0)
          {
             // Le temps est expiré. Ferme la boite de dialogue
             EndDialog(hwnd, IDOK);
          }
       } else 
       {
     
          // La fenêtre n'existe pas encore
          // On re-essaiera dans une seconde
       }
    }
     
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       nSecLeft = 10;  // délai max
       szCaption = "MessageBox avec time_out";  // titre de la fenêtre
     
       // crée un timer de 1 seconde
       HANDLE hTimerQTimer;
       CreateTimerQueueTimer(&hTimerQTimer, NULL, MsgBoxTimeout, NULL,
          1000, 1000, 0);
     
       // Affiche la MessageBox
       MessageBox(NULL, "Vous avez 10 secondes pour répondre",
          szCaption.c_str(), MB_OK);
     
       // Annule le Timer et supprime la queue correspondante
       DeleteTimerQueueTimer(NULL, hTimerQTimer, NULL);
     
       // Affiche un message pour indiquer si le timer a expiré ou non
       MessageBox(NULL,
          (nSecLeft == 0) ? "Temps expiré" : "L'utilisateur a répondu",
             "Résultat", MB_OK);
     
    }
    //---------------------------------------------------------------------------
    Dans le Unit1.h:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int nSecLeft;
    AnsiString szCaption;

Discussions similaires

  1. Propriété d'une Message Box avec boutons YesNoCancel
    Par eric4459 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/11/2014, 20h52
  2. [Débutant] Afficher message box avec nom du repertoire.
    Par kazuzu dans le forum C#
    Réponses: 1
    Dernier message: 08/10/2013, 11h16
  3. Réponses: 3
    Dernier message: 25/02/2012, 18h57
  4. [XL-2000] message box avec un critére
    Par kaboche dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 20/10/2011, 13h18
  5. [C#] Message box avec des boutons diff.
    Par BoOom dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/04/2006, 12h47

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