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