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 :

Confirmation avant fermeture de mon appli = crash


Sujet :

Delphi

  1. #1
    Membre actif Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Points : 251
    Points
    251
    Par défaut Confirmation avant fermeture de mon appli = crash
    Salut,

    Je souhaite faire quelque chose de tout simple (à priori) : mon application propose plusieurs onglets, et lorsque l'utilisateur ferme l'appli, je souhaite affichait une MessageDlg pour confirmer la sauvegarde des données, pour chaque onglet.

    Actuellement l'appli détecte bien si les données des onglets ont été modifié ou non, pour proposer le dialogue de confirmation uniquement si c'est nécessaire (si pas de modif, alors inutile de sauvegarder).

    Là où ça se complique c'est que l'instruction affichant le message fait planter mon appli (message incompréhensible).

    En résumé, mon appli a une TForm principale et des onglets qui contiennent des TForm enfants. J'ai mis mon MessageDlg dans le OnDestroy de chaque TForm.

    J'ai remarqué le OnDestroy de ma TForm principale s'exécute avant le OnDestroy de mes TForm ernfants. Peut être qu'un élément de contexte a disparu causant le crash.

    Qu'en pensez vous ?

    Edit 1 : je trouvais plus propre d'utiliser les évènements natifs des TForm, mais si je n'ai pas le choix je tenterai de mettre mes confirmations dans le OnDestroy de la TForm principale, ce qui m'obligera à "scanner" tous les onglets ouverts pour faire les contrôles adéquates. Je trouvais cette solution complexe pour rien, mais si je n'ai pas le choix...

    Edit 2 : je viens de tester l'idée de l'Edit 1, ça ne fonctionne pas non plus, mais pas de crash. En fait le MessageDlg apparait et disparait instantanément, comme si toute l'appli avait reçu l'ordre de se fermer, n'autorisant aucun nouvel affichage...

    Cette fois je suis coincé lol

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    C'est dans OnCloseQuery qu'il faut faire ce genre de chose (ça permet aussi à l'utilisateur d'annuler la sortie).

  3. #3
    Membre actif Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Points : 251
    Points
    251
    Par défaut
    Bonjour,

    Je n'étais jamais passé par cette méthode.

    Merci pour l'info. J'utilise OnCloseQuery et la méthode décrite dans mon Edit 1. En effet, mes OnClose et OnCloseQuery de TForm enfant ne sont jamais déclenchés.

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

Discussions similaires

  1. Mon application crashe à la fermeture sur Mac
    Par michelblh52 dans le forum Qt
    Réponses: 2
    Dernier message: 06/10/2011, 21h22
  2. Réponses: 2
    Dernier message: 05/11/2007, 13h25
  3. Mon appli empêche la fermeture de Windows
    Par pivil dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 22/09/2007, 10h46
  4. Confirmation avant fermeture
    Par Bowen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/06/2007, 14h32
  5. Message confirmation avant fermeture popup
    Par Ant8386 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 19/07/2006, 11h11

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