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

Bases de données Delphi Discussion :

[Form close] Impossible de fermer une form


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier Avatar de valoji
    Inscrit en
    Septembre 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2005
    Messages : 124
    Points : 81
    Points
    81
    Par défaut [Form close] Impossible de fermer une form
    Bonjour,

    Mon evenement close ne fonctionne pas, pourtant la fenetre enfant est bien fermé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TFic_attente_cpte.FormActivate(Sender: TObject);
    begin
     Fic_MAJ_compte := TFic_MAJ_compte.Create(self);
     Visible := False;
     Fic_MAJ_compte.ShowModal;
     Fic_MAJ_compte.Free;
     Close;
    end;
    Valoji

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut
    salut,

    D'aprés ton code, la fiche "enfant" est Fic_MAJ_compte. Pour pouvoir la fermer, tu doit ferme un modalResult=MrYes dans cette fiche par l'intermédiaire d'un bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TFic_MAJ_compte.BtFermerClick(Sender: TObject); 
    begin 
     ModalResult:=MrYes
    end;
    A+

    windows 10 / DEBIAN 7.9 / Etc...

  3. #3
    Membre régulier Avatar de valoji
    Inscrit en
    Septembre 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2005
    Messages : 124
    Points : 81
    Points
    81
    Par défaut
    Code de la Fiche Accueil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TAccueil.Button1Click(Sender: TObject);
    begin
         Fic_attente_cpte := TFic_attente_cpte.Create(self);
         Fic_attente_cpte.ShowModal;
         Fic_attente_cpte.Free;
    end;
    Ensuite ouverture de la fiche attente :
    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
     
    procedure TFic_attente_cpte.FormActivate(Sender: TObject);
    begin
     Fic_MAJ_compte := TFic_MAJ_compte.Create(self);
     Visible := False;
     Fic_MAJ_compte.ShowModal;
     Fic_MAJ_compte.Free;
     Close;
    end;
     
    procedure TFic_attente_cpte.FormClose(Sender: TObject;
      var Action: TCloseAction);
    begin
    MessageDlg('fermeture', mtWarning, [mbOK], 0);
    end;
    Ensuite Code de la Fiche Mise à jour code
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    procedure TFic_MAJ_compte.FormCreate(Sender: TObject);
    begin
         Query_General.SQL.Clear;
         Query_General.SQL.Add('update compte_ordonnateur set ctrser = "0"');
         if not (Query_General.prepared) then Query_General.prepare;
         Query_General.ExecSQL;
         If not Query_CTR.Active then Query_CTR.Active := True;
         If not Query_erreur.Active then Query_erreur.Active := True;
         Lerr.Caption := inttostr(Query_erreur.RecordCount) +' erreur(s) ';
         [color=blue]RemplirLstCpteRec;[/color]
         RadioGroup_ChoixMAJClick(Self);
    end;
     
    procedure TFic_MAJ_compte.[color=blue]RemplirLstCpteRec[/color]();
    var
       I : Integer;
    begin
     LstCpteRec := TStringList.Create;
     LstCtrser :=  TStringList.Create;
     i := 0;
     Fic_attente_cpte.Gauge_attente.MaxValue :=  Query_CTR.RecordCount;
     with Query_CTR do
     begin
          First;
          repeat
                Inc(i,1);
                Fic_attente_cpte.Gauge_attente.Progress := i;
                LstCpteRec.Add(Query_CTRctrnum.AsString +  Query_CTRctrlbu.AsString);
                LstCtrser.Add(Query_CTRctrser.asstring);
                Next;
          until (Eof);
          LstCpteRec.SaveToFile('D:\Temp\Lst');
     end;
    end;
    Mon problème est lorsque que je ferme la fiche Mise à jour compte, Le code au niveau de la fiche d'attente reprends bien : Fic_MAJ_compte.Free;. Mais le close ne fonctionne pas(Msgbox sur l'evenement onclose : Mais rien du tout s'affiche). Le modal de la fiche d'accueil reste toujours inactive.

    J'ai bien essayer modalresult sur fiche d'attente et fiche d'accueil mais sans résultat.

    Valoji

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Les Close, ModalResult et autres ne fonctionnent pas quand ils sont utilisées dans les événements OnActivate, OnShow et OnCreate (pas sur pour le dernier.

    De plus le OnActivate s'enclenche à chaque fois que la fenetre à le focus, ce qui risque perturbé fortement ton programme (ca va réouvrir ta fenetre a chaque fois que lautre prendra le focus)

    Citation Envoyé par Aide delphi
    Utilisez l'événement OnActivate pour effectuer des actions particulières quand la fiche reçoit la focalisation. Une fiche devient active quand elle obtient la focalisation, par exemple quand l'utilisateur clique dans la fiche.

    pour cette partie de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        repeat
                Inc(i,1);
                Fic_attente_cpte.Gauge_attente.Progress := i;
                LstCpteRec.Add(Query_CTRctrnum.AsString +  Query_CTRctrlbu.AsString);
                LstCtrser.Add(Query_CTRctrser.asstring);
                Next;
          until (Eof);
    il te manque un Application.ProcessMessages juste aprés l'incrémentation de la progressbar (Fic_attente_cpte.Gauge_attente.Progress := i; ).
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre régulier Avatar de valoji
    Inscrit en
    Septembre 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2005
    Messages : 124
    Points : 81
    Points
    81
    Par défaut
    Il n y a pas besoin d'un application.processmessage, car progressbar.progress evolue normalement, sauf si derriére je dois mettre un label à un jour en même temps, par exemple.

    Valoji

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/02/2013, 14h37
  2. Réponses: 8
    Dernier message: 26/05/2010, 10h25
  3. [C#] Impossible d'afficher une form dans la barre des taches
    Par padodanle51 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/05/2006, 09h30
  4. [VB6] Comment fermer une form en cliquant sur un boutton ??
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/04/2006, 19h05
  5. [C#] Impossible d ouvrir une Form
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 9
    Dernier message: 23/04/2006, 14h28

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