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

Lazarus Pascal Discussion :

La fenêtre ne veut pas se fermer ?


Sujet :

Lazarus Pascal

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 123
    Points : 63
    Points
    63
    Par défaut La fenêtre ne veut pas se fermer ?
    Bonsoir.
    je veux créer un fichier à partir d'une liste de données dans un TStringGrig.
    je clique sur le bouton pour créer mon fichier et si le fichier existe déjà, une fenêtre issue d'une form (FrmMsg) s'ouvre avec un message me demandant si je veux écraser le fichier existant.
    quelquefois, ça marche.
    mais à certain moment, la fenêtre s'ouvre, mais ne se ferme pas après avoir cliquer sur un des boutons.
    le bouton est bien pris en compte, mais la feuille ne se ferme pas.
    Elle ne se ferme pas non plus si je clique dans la petite croix en haut à droite de la fenêtre.
    le programme est bloqué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      TFrmMsg = class(TForm)
        BoutonOK: TBitBtn;
        BoutonAbandon: TBitBtn;
        Message01: TPanel;
        Message02: TPanel;
       private
     
      public
        Procedure MsgEcrase();              // message pour autoriser l'écrasement du fichier existant
     
      end;
    Appel de la fenêtre
    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
     
          ValeurBtn:=3;                                                             // init
          NomFichier:='';                                                           // initialisation du nom de fichier
          TEcrase:=false;                                                           // initialisation
          repeat
            FrmGraph.SavDialog.Filter := 'Fichier Excel (*.CSV)|*.CSV';             // filtre les fichiers dans la fenêtre de présentation
            if FrmGraph.Savdialog.Execute then begin                                // boîte de dialogue 'enregistrer sous...', pour enreg. le fichier CSV
              NomFichier:=FrmGraph.SavDialog.FileName;                              // récupère le nom du fichier
              if FileExists(NomFichier) then begin                                  // le fichier existe-il ?
                FrmMsg.MsgEcrase();                                          // oui !, demande s'il faut écraser l'ancien ?
                ValeurBtn:=FrmMsg.ShowModal;                                        // affichage de la fenêtre de choix des paramètres d'extraction
                if (ValeurBtn=1) or (ValeurBtn=8) then                              // la fenêtre a été fermée par le bouton 'OK' ou 'Ajout', écrasement de l'ancien fichier existant
                    TEcrase:=true                                                   // sortie de boucle avec nom de fichier valide, existant, à écraser !
                else
                  FrmGraph.SavDialog.FileName:='';                                  // il ne faut pas écraser l'ancien fichier, efface le nom ...
              end;                                                                  // ... et redemande un nom de fichier
            end
            else begin                                                              // sortie de la boîte de dialogue par 'annuler'
              TEcrase:=true;                                                        // clic sur bouton 'annuler'
              FrmGraph.SavDialog.FileName:='';                                      // sortie de boucle avec filename=''
            end;
          until ((TEcrase) or (not FileExists(NomFichier)) and (FrmGraph.SavDialog.FileName<>''));
          //------------------------------------------   Création du fichier '*.CSV'
          if NomFichier<>'' then begin                                              // Un nom de fichier a-t'il été retourné
            SaveFileCSV(Sender, NomFichier, ValeurBtn);                             // Oui ! construit le fichier '*.CSV'
    qu'es-ce qui peut empêcher la fermeture de la fenêtre ?
    Merci pour tout le temps que vous passez à essayer de comprendre ce que nous voulons faire.
    bonne soirée

  2. #2
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut à mon avis c'est tom TFrmMsg qui n'est pas correct. Normalement ca devrait être une modal qui te renvoies modalResult, vu quelle est simple pourquoi na pas utiliser MessageDlg directement ?

    A+
    Jérôme
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    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
    Il faudrait plus t'intéresser aux différentes propriétés des composants que tu utilises
    TSaveDialog intègre déjà ce contrôle pour autant que l'option ofOverwritePrompt soit activée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SaveDialog1.Filter  := 'Fichier Excel (*.CSV)|*.CSV';             // Rien à voir avec Excel !
    SaveDialog1.Options := SaveDialog1.Options +[ofOverwritePrompt];
     
    if SaveDialog1.Execute then
      SaveFileCSV(SaveDialog1.FileName);

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 123
    Points : 63
    Points
    63
    Par défaut La fenêtre ne veut pas se fermer ?
    Bonjour,
    merci pour vos 2 réponses.
    je m’aperçois, qu'après quelques évolutions dans le programme, toutes les fenêtres que je tente d'ouvrir sont perturbées.
    je ne sais pas pourquoi.
    //-----------
    Pour répondre aux suggestions.
    vu quelle est simple pourquoi na pas utiliser MessageDlg directement ?
    En fait, elle n'est pas si simple.
    il y a un 3ième bouton pour l'ajout de données au fichier existant.
    //-----------
    Il faudrait plus t'intéresser aux différentes propriétés des composants que tu utilises
    effectivement, je ne connaissais pas cette propriété, et je suis content de l'apprendre.
    je suis venu tard à Delphi et j'avoue patauger un peu, quelquefois.
    A noter que je n'aurais pas pu quand même utiliser cette propriété à cause du 3ième bouton.
    Bonne journée,
    et encore une fois, merci pour les réponses

Discussions similaires

  1. [Débutant] WinForm qui ne veut pas se fermer
    Par shkyo dans le forum C#
    Réponses: 13
    Dernier message: 15/10/2015, 16h52
  2. [VB.NET]un formulaire qui ne veut pas se fermer
    Par josyde2006 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/08/2006, 08h29
  3. JOptionPane qui ne veut pas se fermer!
    Par benthebest dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 29/12/2005, 22h05
  4. Un form ne veut pas se fermer
    Par Oluha dans le forum Langage
    Réponses: 2
    Dernier message: 03/11/2005, 11h16
  5. Ma fenêtre OpenGL ne veut pas rester ouverte
    Par Mynautor dans le forum OpenGL
    Réponses: 3
    Dernier message: 03/02/2005, 13h25

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