Fermeture du projet [Résolu]

Messages postés
187
Date d'inscription
jeudi 16 octobre 2008
Dernière intervention
20 février 2010
- - Dernière réponse : driver1974
Messages postés
1
Date d'inscription
mercredi 9 mai 2007
Dernière intervention
21 mai 2010
- 21 mai 2010 à 01:08
Salut
Dans un bouton j'ai écris le code suivant pour fermer mon projet:

var rep:word;
Begin
rep:=messagedlg('etes vous sur de vouloir quitter'),mtinformation,[mbyes,mbcancel],0);
if rep=mryes then begin
application.terminate;
end;
end;
le bouton ça marche bien mais quand j'ai ajouté le code dans l'événement on close de la form principal
Le projet se ferme avec le clic sur le ok et sur le bouton annuler du message.



yahia
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
3
Merci
et si tu veux mettre ta confirmation quand on click sur la croix rouge (qui a mon avis est plutot ce que tu veux), utilise OnCloseQuery (et affecte caNone à CloseAction si tu veux annuler)

Merci Guillemouze 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de Guillemouze
Messages postés
187
Date d'inscription
jeudi 16 octobre 2008
Dernière intervention
20 février 2010
3
Merci
je m'excuse et je me corrige le code proposé par andry ça marche pas, j'ai essayé un autre code
if messagedlg('etes vous sur de vouloir quitter'),mtinformation,[mbyes,mbcancel],0) = mrcancel then CanClose :=false;


yahia

Merci youhibadelphi 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de youhibadelphi
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
procedure TForm1.BitBtn1Click(Sender: TObject);
var
rep:word;
Begin
 rep:= messagedlg('etes vous sur de vouloir quitter', mtinformation, [mbyes,mbcancel], 0);
 if rep=mryes then
  application.terminate;
end;



bonjour,

n'oublie pas la balise code..

oui, c'est normal puisque l'évènement OnClose ira jusqu'à son terme car rien ne l'arrêtera et donc fermera la forme et si elle est principale alors l'application se ferme aussi.

si tu veux fermer ton projet le bouton sur la forme est suffisant..

cantador
Commenter la réponse de cs_cantador
Messages postés
187
Date d'inscription
jeudi 16 octobre 2008
Dernière intervention
20 février 2010
0
Merci
salut
mon ami cantador merci pour le conseil, et merci pour la solution mon ami Guillemouze.
autre solution propsé par Andry sur le forum developpez.com
CanClose :messagedlg('etes vous sur de vouloir quitter'),mtinformation,[mbyes,mbcancel],0) mrYes;
dans l'evenement onCloseQuery de ta forme.
merci


yahia
Commenter la réponse de youhibadelphi
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
oui la solution de Andry fonctionne pour la fermeture d'une forme..

mais si celle-ci n'est pas la forme principale
le projet ne se fermera pas.

cantador
Commenter la réponse de cs_cantador
Messages postés
187
Date d'inscription
jeudi 16 octobre 2008
Dernière intervention
20 février 2010
0
Merci
Oui cantador la question concerne la fermeture du projet et je crois qu'on parle de la form principale ici.
yahia
Commenter la réponse de youhibadelphi
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
Juste une remarque ne mets pas de code sans l'évènement car au bout d'un moment on ne sait plus de quoi on parle et n'oublie pas la balise.

je te corrige :

l'evènement OnCloseQuery permet de conditionner l'évènement OnClose car le premier se déclenche avant le second ce qui permet de fixer des règles quant à la fermeture de la forme.

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose :messagedlg('etes vous sur de vouloir quitter',mtinformation,[mbyes,mbcancel],0) mrYes;
end;


autrement dit si l'utilisateur clique sur Oui
alors la valeur de CanClose est true.
et donc l'evènement OnClose peut s'effectuer sans problème (ex : un clic sur la croix de fermeture)

et à l'inverse tu l'auras compris si c'est non alors la forme ne se fermera pas.
(très pratique s'il on veut par exemple éviter une fermeture intempestive de la forme pendant une opération d'écriture..)

et si cette forme est la forme principale
(déclarée comme telle dans delphi..)
alors sa fermeture si elle est autorisée fermera aussi l'application.

mais attention tout de même car dans certaines situations cela ne se passe pas très bien..
->>> voir sujets de discussions à ce propos..

et pour finir...

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.Terminate;
end;


ferme convenablement le projet.

cantador
Commenter la réponse de cs_cantador
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
0
Merci
D'après ce que j'ai compris de ton problème :

procedure TForm1.Button1Click(Sender: TObject);
begin
 Close;
end;
 
procedure TForm1.OnClose(Sender: TObject; Action: TCloseAction);
begin
 if MessageDlg('Etes-vous sûr de vouloir quitter', mtinformation, [mbyes,mbcancel], 0) = mrNo then Action := caNone;
end;


N'oublie pas de lier les méthodes depuis l'inspecteur d'objets ...

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
0
Merci
Oops ... lire :

if MessageDlg('Etes-vous sûr de vouloir quitter', mtinformation, [mbyes,mbNo], 0) = mrNo then ...

Ca paraît logique, puisqu'on pose une question qui attend une réponse par Oui ou Non, et non pas par Oui ou Annuler ...

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
1
Date d'inscription
mercredi 9 mai 2007
Dernière intervention
21 mai 2010
0
Merci
berhoumi merci
Commenter la réponse de driver1974

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.