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 :

Boîte de message InputBox à composants multiples


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut Boîte de message InputBox à composants multiples
    Comment créer des messagebox du genre appelés avec InputBox() ou ShowMessage()?
    J'ai essayé:
    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
     
    procedure MonMessageBox;
    var F:TForm;
        I:TImage;
    begin
    F:=TForm.Create(Self);
    I:=TImage.Create(F);
    I.Parent:=F;
    I.Picture.LoadFromFile('...');
    F.FormStyle:=fsStayOnTop;
    Form1.Enabled:=false;
    F.OnClose:=Form1.QuandOnFerme;
    F.Show;
    end;
     
    procedure TForm1.QuandOnFerme(Sender: TObject; var Action: TCloseAction);
    begin
    Form1.Enabled:=true;
    end;
    Mais c'est très différent de ShowMessage() et de InputBox() où le programme est bloqué au niveau de ces fonctions et ne continue que si on ferme la boîte de message. Je crois que c'est possible car ces fonctions font appel à des API Windows (int 2Eh).

    Mon but est de créer des fiches comme ShowMessage mais à plusieurs TEdit et un TImage.
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    ? J'ai pas compris ton pb.
    Pour un pb similaire j'ai créé une unité qui contient tout ce qui m'interesse pour un message d'erreur et dedans j'ai rajouté le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TIErrBox.Msg(str: string);
    begin
      Self.Caption := 'Information, Attention le problème suivant a été rencontré :';
      ErrText.Text := str;
      self.ShowModal;
    end;
    Où ErrText est un TMemo (tu peux mettre un TRicheEdit...)
    Quand tu as un message d'erreur tu appelles par msg('ton message');
    ça correspondà ce que tu cherches ?

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    L'instruction F.OnClose:=Form1.QuandOnFerme; déclenche la seule et unique chose c'est à dire "Form1.Enabled:=true;" c'est à dire rien lorsque Form1 est déjà active.

    Moi je mettrais plutôt un Tbutton sur la Form1 (avec visible à false et Enabled à true) et dont l'événement onClick déclenche la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.MonButton1Clik(Sender: TObject; var Action: TCloseAction);
    var          F : tForm;
    begin       F:=Sender as TForm;
                  F.Close; 
    end;
    ... et en remplacant dans la procedure procedure MonMessageBox la fin à partir de F.OnClose:=Form1.QuandOnFerme, par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    F.OnClose:=Form1.MonButton1Clik;
    F.ShowModal;
    pour achever le tout faudrait compléter la procédure MonMessageBox au moins par la création dynamique d'un label pour le message et d'un Edit posés sur F et éventuellement un bouton Ok et un bouton ignorer si tu veux quelque chose qui ressemble à InputBox() ou ShowMessage().
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  4. #4
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Merci philnext!

    Et oui, ça correspond à ce qu'attendais.
    Peux-tu m'expliquer le truc du "self."?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  5. #5
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Citation Envoyé par rakoto15
    Peux-tu m'expliquer le truc du "self."?

    Self est une référence à l'objet. Ici la Form.
    Akim Merabet

  6. #6
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Bien c'est résolu

    Mon seul prob c'est de ne pas avoir bien lu l'aide de c++ builder
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

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

Discussions similaires

  1. Boîte de message décalée / découpée
    Par dj-julio dans le forum Windows XP
    Réponses: 8
    Dernier message: 12/02/2008, 12h11
  2. [OpenOffice] Réafficher une boîte de message
    Par mpat dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 14/09/2007, 13h10
  3. Boîte de message sans bouton "Veuillez patienter..."
    Par Droïde Système7 dans le forum Delphi
    Réponses: 18
    Dernier message: 14/02/2007, 10h38
  4. Réponses: 4
    Dernier message: 23/08/2006, 14h15
  5. Une boîte de messages en PHP ?
    Par TheRedLed dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/05/2006, 15h10

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