Fermeture du projet [Résolu]

youhibadelphi 187 Messages postés jeudi 16 octobre 2008Date d'inscription 20 février 2010 Dernière intervention - 26 août 2009 à 10:00 - Dernière réponse : driver1974 1 Messages postés mercredi 9 mai 2007Date d'inscription 21 mai 2010 Dernière intervention
- 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
Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 26 août 2009 à 12:10
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de Guillemouze
Meilleure réponse
youhibadelphi 187 Messages postés jeudi 16 octobre 2008Date d'inscription 20 février 2010 Dernière intervention - 26 août 2009 à 15:39
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de youhibadelphi
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 26 août 2009 à 10:14
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
youhibadelphi 187 Messages postés jeudi 16 octobre 2008Date d'inscription 20 février 2010 Dernière intervention - 26 août 2009 à 13:04
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
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 26 août 2009 à 15:25
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
youhibadelphi 187 Messages postés jeudi 16 octobre 2008Date d'inscription 20 février 2010 Dernière intervention - 26 août 2009 à 15:44
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
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 26 août 2009 à 16:19
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
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 27 août 2009 à 05:58
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
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 27 août 2009 à 05:59
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
driver1974 1 Messages postés mercredi 9 mai 2007Date d'inscription 21 mai 2010 Dernière intervention - 21 mai 2010 à 01:08
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.