Evenement de fermeture de form avec C++ Builder 6

cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 - 26 mars 2008 à 17:35
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 28 mars 2008 à 12:30
Bonjour,

J'ai un soucis pour avoir mon evement pour la fermeture de la fenetre.

Je pensais que ce code etait bon mais le deboger me dit qu'il n'existe pas.

void __fastcall TForm1::FormClose(TObject *Sender){
}

Quelqu'un a une idée ?

Merci

[PaTaTe]

5 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
26 mars 2008 à 18:52
Salut,


Tu as connecté ta méthode avec ton évènement ?

Dans la fenêtre des propriétés de ta form, tu as un onglet évènement ou quelque chose comme ça.

Tu cherche ensuite le onclose, et tu double clique dans la case à droite.

Ca te met dans le code ci-dessus.
0
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
26 mars 2008 à 23:57
Oui j'ai mais je ne peux rien y faire la liste est vide.

[PaTaTe]
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
27 mars 2008 à 17:05
Je lance C++ Builder 6.

Il propose automatiquement un projet avec une form.

Je l'enregistre (Fichier->Tout enregistrer).

Je m'assure que la form Form1 est sélectionnée dans l'Inspecteur d'objet.

Je clique sur l'onglet Evénements de ce même inspecteur.

Deux colonnes. La colonne de gauche est la liste des évènements pouvant
survenir dans la vie de ma Form. La colonne de droite est vide
actuellement, et contient une liste de noms de méthodes. Ces méthodes
seront appelés automatiquement lorsque les évènements auront lieu.

Je repère l'évènement OnClose.

Je double clique sur la case vide à droite de cet évènement.

C++ Builder va alors choisir automatiquement un nom pour la méthode (On peut le choisir si on veut), et va faire 3 choses :


1 Ajouter l'implémentation au code de la form, l'afficher et mettre le
curseur dedans pour que l'on puisse coder la méthode en question.

2 Ajouter la déclaration de cette méthode, dans Unit1.h.

3 Modifier le fichier descriptif de la form, Unit1.dfm, en lui ajoutant la ligne :   OnClose = FormClose


Attention, si on n'ajoute pas de code dans la méthode et que l'on
sauvegarde, C++ Builder vire tout ça. Pour supprimer la méthode
proprement, il faut effetivement supprimer le code qu'il y a dedans, et
sauvegarder : C++ Builder enlèvera alors l'implémentation, la
déclaration, et la ligne dans Unit1.dfm.


Bien. Implémentons la méthode :


void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)

{

  ShowMessage("Les évènement sous C++ Builder 6, c'est trop simple et pratique");

}


Un coup de F9, la form s'affiche, on clique sur sa croix, le message s'affiche, on ferme le message, la form disparaît.
0
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
27 mars 2008 à 21:54
J'ai deja tenté ça mais le compilo me dit que le membre OnClose n'existe pas pour la form. Si ça avait été aussi simple, j'aurais réussis ... :(

[PaTaTe]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
28 mars 2008 à 12:30
Si tu regardes ci-dessus, tu vois que la Form n'a effectivement pas de membre OnClose, mais un membre FormClose.


Le nom de la méthode dans la colonne de droite des évènements doit correspondre avec le nom de la méthode dans ton code.


Vérifie que tu as bien mis FormClose dans la colonne évènement, ou renomme ta méthode... Bref, fait concorder.


Vérifie que tout concorde comme je le décrit plus haut :

  Déclaration dans le .h, avec le bon proto.

  Implémentation dans le .cpp.

  Lien évènement/méthode dans le .dfm.
0
Rejoignez-nous