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 :

Recuperer la valeur d'une fermeture de fenêtre


Sujet :

Delphi

  1. #1
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut Recuperer la valeur d'une fermeture de fenêtre
    Bonjour à tous,

    Voici mon problème...
    J'ai une fiche principale form1 qui ouvre une fiche secondaire form2.
    Sur Form2 j'ai plusieurs Bitbtn, qui ont tous des fonctionnalités différentes, mais qui ont tous aussi pour effets de fermer cette Form2. Ma form1 doit réaliser des opérations différentes en fonction du bitbtn cliqué...

    Est-il possible de récupérer une variable me retournant le composant cliqué en dernier sur Form2?

    Merci.

    @+.

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Tu peux peut-être jouer avec le modal result en affectant une valeur Mr* différente pour chaque bouton de Form2. (s'il n'y en a pas trop )

    Alors, dans Form1, tu peux tester le ModalResult (mrOK, mr....)

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Par défaut
    Personellement je créerai des procedures dans la form1 qui doivent faire ce qu'elles doivent faire. Et dans la Form2, quand j'appuye sur un bouton j'appelerai directement la procedure qui est dans Form1 avant de quitter. En gros :

    Dans Form1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Procedure Action1();
    begin
      // ce que tu veux
    end;
     
    Procedure Action2();
    begin
      // ce que tu veux
    end;
    et dans ta Form2 quand tu appuye sur les boutons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Procedure Form2.btn1Click(Sender : TObject);
    begin
      Form1.Action1();
      Form2.close();
    end;
    Enfin tu vois le genre ...

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut,

    La méthode de qi130 est visiblement la plus simple, donc si tu n'as pas trop de boutons sur ta Form2, je te conseille également cette méthode.

    Dans le cas où tu as un nombre important de boutons (est-ce d'ailleurs raisonnable ?), tu peux définir une propriété 'ClickedButton' dans Form2 qui te renverra le bouton sur lequel tu as cliqué.

    Je pars bien sûr sur l'hypothèse que ta form est appelée avec ShowModal.

    Form2 contient 4 boutons (Button1 à Button4) avec ModalResult = mrOK, et un bouton (ButtonCancel) avec ModalResult = mrCancel.
    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
     
    type
      TForm2 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        ButtonCancel: TButton;
        procedure ButtonClick(Sender: TObject);
      private
        { Déclarations privées }
        FButton: TButton;
      public
        { Déclarations publiques }
        property ClickedButton: TButton read FButton;
      end;
     
    var
      Form2: TForm2;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm2.ButtonClick(Sender: TObject);
    begin
      FButton := TButton(Sender);
    end;
     
    end.
    Les 4 boutons sont reliés à la procédure ButtonClick.

    Form1 (Form appelante)
    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
     
    implementation
     
    uses Unit2;
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Form2 := TForm2.Create(Self);
      try
        with Form2 do begin
          if ShowModal = mrOK then
            ShowMessage('Bouton cliqué: ' + ClickedButton.Name);
        end;
      finally
        FreeAndNil(Form2);
      end;
    end;
    Et voilou !
    @+

  5. #5
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    Tout d'abord merci bocoup pour votre aide...

    En effet, la méthode de hy00ga me parait un peu plus dur à mettre en oeuvre (surtout que ma forme2 peut être appelée par d'autres forms).

    Je vais utiliser la méthode de QI130, car je n'est que 4 bitbutton, donc c'est tout à fait adapter.

    Un dernier point, il peut m'arriver d'avoir le cas Form1 ouvre Form2, et Form2 ouvre Form3 (qui elle aussi a des TButton, 2 en l'occurence). Puis-je récupérer directement les modal result de ma Form3 à ma form1, ou dois-je passer par une variable intermediaire sur ma form2?

    Merci.

    @+.

  6. #6
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Re,

    La valeur ModalResult de la Form3 sera récupérée au niveau de son appel, donc sur Form2.
    Il va effectivement devoir que tu fasses redescendre cette valeur vers Form1.

    @+

  7. #7
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    C'est ce qu'il me semblait, mais je voulais m'en assurer auprès de pros...

    Encore un problème de résolu,
    merci bocoup pour votre aide.

    @+.

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

Discussions similaires

  1. Récupérer les valeurs d'une GtkComboBox
    Par portos.lio dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 01/12/2005, 13h32
  2. Recuperer les valeurs d'une requette [C#]
    Par AlphonseBrown dans le forum C#
    Réponses: 7
    Dernier message: 22/11/2005, 16h36
  3. [VB.NET] Recuperer la valeur d'une cellule d'un DataTable
    Par graphicsxp dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/03/2005, 10h59
  4. recuperer la valeur d une cellule
    Par Invité(e) dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/01/2005, 18h05
  5. [C#] Recuperation de valeur dans une autre page
    Par kenzo080 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 02/06/2004, 10h32

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