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

Langage Delphi Discussion :

Bouton "croix" de fenêtre inopérant


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut Bouton "croix" de fenêtre inopérant
    Bonjour,
    Voila, j'ai une appli avec 2 forms qui ont exactement les mêmes propriétés et il y en a une qui se ferme normalement en cliquant sur la croix de la fenêtre alors que l'autre ne se termine pas. En fait, la seule différence importante que je vois, c'est le menu présent dans la fom qui ne veut pas se fermer.
    Quelqu'un saurait-il comment rendre la croix à nouveau active??
    Merci d'avance!

  2. #2
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    Bonjour,
    - y a t il du code sur l'evenement Onclose de ta form qui ne se ferme pas ?
    - Est ce des forms classiques ou des MDIChild (application MDI) ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut
    Alors il n'y a pas de code sur le OnClose de cette form et la form est une TForm...

  4. #4
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    - Si ton projet est complexe, arrives-tu a reproduire ton problème en créant une nouvelle application avec 2 forms simples ?

    - tu as une form1 qui appelle une form2 et c'est la form2 qui ne se ferme plus ?

    - par "la croix" tu veux bien dire le bouton dans la barre système windows, pas un bouton à toi ?

    - Quel code as-tu utiliser pour afficher la fenêtre qui ne se ferme plus ?

    donne nous un peu plus de détail pour que l'on puisse creuser avec toi le problème, qui a forcément une solution

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut
    J'espère bien qu'il y a une soluce oui!

    -j'ai pas essayé de reproduire le truc avec 2 autres forms
    -j'ai en effet une form1 qui appel la form2 juste on faisant un show
    -je parle bien du bouton de la barre systeme en efet
    -et le code c'est juste un show de ma form 2 a partir de la form1 et c'est tout

    Merci de ton aide en tt cas!

  6. #6
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    ça m'a l'air d'un truc tout bête gros comme un camion dans un couloir, mais que l'on arrive pas à voir "à distance"

    Pour ta form2 :

    la propriété Bordericons contient-elle bien [biSystemMenu] ?

    Quelle est la valeur de la propriété Borderstyle ?

    dans ta form1 :

    où appelle tu Form2.show ? (sur quel évenement, sur le click d'un bouton ?)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut
    Pour ma Form 2:
    -j'ai [biSystemMenu,BiMinimize] en BorderIcons et BorderStyle a BsSingle
    -sinon, je fais le OnShow après l'excecution d'une requête qui se trouve dérrière un bouton en effet...En gros ma Form1 est une feuille de connexion.

  8. #8
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    désolé Kobe mais on a vérifier pas mal de choses là, et je ne vois pas d'où peut venir ton souci...

    La croix n'est pas grisée ?

    c'est bien la fenêtre active que tu essaye de cliquer pas une fenêtre en dessous d'une fenêtre modale ?

    et pour finir, qu'est ce que ça fait exactement quand tu clique sur la croix ? (me dis pas rien, détail )

    Dans le pire des cas tu isoles la fenêtre qui va pas, tu la refais et tu la remplace dans ton projet.

  9. #9
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    Simplement,

    Form1 est la form principale de l'application donc seulement elle (la form principale) a pour comportement la fermeture de l'appli lors de sa fermeture via la "croix" (ou .Close, ou .Free).

    Form2 n'est pas principale.
    Pour que Form2 est le meme comportement que Form1, implémenter l'événement OnClose() de Form2 et mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Application.Terminate;
    end;
    D'ordre générale, pour choisir quelle form sera la principale aller dans le menu Projet->Options... Se mettre dans l'onglet 'Fiches' et choisir parmis les form celle que l'on veut: 'Fiche principale'

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut
    Heu merci pour tout, j'vais tester tout que j'aurais résolu mes soucis actuels de base de données...

    Ah par contre neilbgr, j'ai déja essayé ce code sur le Onclose (je suppose que c'est pour le Onclose de la Form2 parce que le code que tu as mis concerne la Form1 ), et il se passe quelque chose d'étrange puisque la fenêtre se ferme immédiatement après le Onshow, en gros l'événement a l'air d'être executé alors qu'il ne doit pas être appelé à ce moment là!

  11. #11
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    Citation Envoyé par kobe
    (je suppose que c'est pour le Onclose de la Form2 parce que le code que tu as mis concerne la Form1 )
    Effectivement !! un copier coller malencontreux.... dsl


    Citation Envoyé par kobe
    Ah par contre neilbgr, j'ai déja essayé ce code sur le Onclose [...] et il se passe quelque chose d'étrange puisque la fenêtre se ferme immédiatement après le Onshow, en gros l'événement a l'air d'être executé alors qu'il ne doit pas être appelé à ce moment là!
    En revanche là il y a un souci dans ton code... car de mon coté, une appli toute simple, ajout d'une Form2, Form2.visible mis à True, sur le OnClose de Form2 je fais Application.Termiante; et tout se passe à merveille dans le meilleur des mondes...

    Bon courage a toi !

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut
    En fait je ne sais pas quelle form mettre en form principale...Si je met la form2, alors la form1 se ferme dès le lancement du prog! Honnétement, je n'arrive pas à comrpendre le truc là

  13. #13
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    Franchement je peux pas vraiment t'aider car on dirait qu'il y a du code dans le OnShow de tes form qui n'a pas l'air très sympa.

    Pour que tu comprennes ce que je t'ai ecris dans ce fil, il te faut partir d'une nouvelle application.

    Tu ajoute une Form (Form2);
    Tu lui mets Visible a True
    Sur le OnClose de Form2 tu ecrit Application.Terminate;

    Et tu lance le prjet.

    Tu as tes deux forms qui apparraissent (Attention, Form2 est derrirère Form1).
    Si tu ferme Form2 ou Form1 et bien l'appli se ferme

    Sans le code du OnClose de Form2, Form2 serait juste cachée.

    Voilà pour le comportement NORMAL.

    En revanche, si tu fais des chose dans les OnShow, OnCreate ou j'sai pas coa, je peux pas le deviner, donc, je peux pas faire grand chose pour toi.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut
    Ok, donc on reprends...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    label4.Caption :=__________;
    label5.Caption :=__________;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm2.FormCreate(Sender: TObject);
    begin
    DateTimePicker1.Date:=Date;
    DateTimePicker2.Date:=Date;
    Datetimepicker3.Date:=Date;
    Datetimepicker4.Date:=Date;
    Datetimepicker5.Date:=Date;
    Datetimepicker6.Date:=Date;
    end;
    Voila ce que j'ai! Par contre, est-ce normal de ne pas avoir la form 2 dans l'inpecteur d'objets quand j'ouvre mon projet (je n'ai que la form1)?

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut
    J'ai bien fait ce que tu m'as dis avec un autre projet et en effet ça marche comme tu la dis!
    Par contre, si la form1 est a visible=false, c'est la form2 qui est dérrière, sinon c'est la form1...:
    Pour moi la seule différence avec mon projet, c'est juste que la form2 au départ n'est pas visible, que je la met visible avec du code qui est dans la form1, puis je ferme la form1 et je me retrouve juste avec la form2 que je ne peux quitter qu'en passant par mon menu...

  16. #16
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    et si sur le onclose de ta Form2 tu écris ceci :

    logiquement ça réaffiche form1 et libère form2.

    par contre pour appeler Form2 depuis la form1 je te conseille de la créer comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Form2:=TForm2.create(self);
    Form2.show;
    enfin, vérifie dans projet > options > Fiches que uniquement la Form1 est créée automatiquement. Form2 doit etre dans la zone "Fiches disponibles" puisque tu vas la créer avec le code ci dessus dès que tu en auras besoin et tu la détruira quand elle se fermera.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut
    J'ai fait exactement ce que tu m'as dis mais ça ne marche tjs pas...j'avoues que ça me dépasse complétement! En fat, dés que je crée la form2 avec la form1, le code situé dans le Onclose est executé tout de suite et l'appli se ferme directement Pourtant je fais rien d'extraordinaire!

  18. #18
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    Ah là je cherche à comprendre ! quand dans Form1, sur le click d'un bouton (par ex.) tu écris uniquement ces deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    form2:=TForm2.create(self);
    Form2.show;
    tu me dis qu'un évenement OnClose se déclenche ?

    pour nous aider à comprendre, (on va y arriver à la fin lol)
    peux tu copier ici ton code de :

    Form1.OnCreate
    Form1.OnShow
    Form1.OnClose

    Form2.OnCreate
    Form2.OnShow
    Form2.OnClose

    copie aussi la méthode d'appelle de form2 à partir de Form1 (toute la procédure sans oublier une ligne)

    Copie aussi tous les évenements liés à form1 et form2, on va faire le tri, sinon on va passer encore 2 mois à solutionner ton souci

    ==> Dans ta form1, lorsque tu appelles Form2 tu ne DOIS PAS fermer Form1, à la rigueur la rendre invisible, mais surtout pas la fermer, sinon tu fermes ton application

Discussions similaires

  1. Redéfinir bouton fermer (croix de la fenêtre)
    Par Ange44 dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 12/10/2007, 20h12

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