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 :

quand on ferme la form principal


Sujet :

Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Albanie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2013
    Messages : 75
    Points : 62
    Points
    62
    Par défaut quand on ferme la form principal
    salut
    j'ai 3 formes:
    form1 principale ,et form2 ,et form3
    Pourquoi quand on ferme la form1 (principal)
    Tout les autres forme son fermé automatiquement ???

    J'ai aussi essayé de libérer toute la mémoire associée au form1 après ouvrir la form2
    Mais ça n'a pas marché
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    FreeAndNil(Form1);
    Form1.Release;
    form2.show;
    end;
    Je vois que tous les autre formes sont liés à la form1( principale)

  2. #2
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 504
    Points : 2 776
    Points
    2 776
    Billets dans le blog
    10
    Par défaut
    Bonjour
    Dans le source du projet tu as le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    C'est le premier appel à CreateForm qui défini la fenêtre principale de l'application. Sa fermeture entraine automatiquement l'arrêt de l'application.
    Si cette fiche perd le status de fiche principale alors c'est possible. En fonction de ton objectif il y a plusieurs solutions

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 635
    Points : 25 353
    Points
    25 353
    Par défaut
    Citation Envoyé par unja2010 Voir le message
    Pourquoi ...
    Je pense qu'il sera nécessaire que vous suiviez une auto-formation en Delphi, par exemple Guide Pascal et Delphi > X. Découverte des composants les plus utilisés - 1ère partie > X-A. La fiche Composant "Form" > X-A-1. Manipulation Guidée qui vous explique l'utilisation de Fenêtre Modale ce qui permet de "scénariser" l'utilisation d'un programme

    Et il faudrait lire l'aide aussi : MainForm

    La valeur de MainForm est la fiche qui agit comme la fenêtre principale de l'application. La fiche principale est la première fiche créée dans le corps principal de l'application par un appel de CreateForm. Lorsque la fiche principale est fermée, l'application se termine.

    Citation Envoyé par ALWEBER Voir le message
    En fonction de ton objectif il y a plusieurs solutions
    C'est ce que j'appelle "scénariser"
    Comment les fiches interagissent entre-elles, leurs durée de vie, leur ergonomie, leur chronologie ...

  4. #4
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 390
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 390
    Points : 3 162
    Points
    3 162
    Par défaut
    Bonjour,
    si tu veux fermer des fenêtres, il faut créer une application MDI et non SDI.

    Les application MDI ont une fenêtre principale et des fenêtres enfants que l'on peut créer, supprimer, réduire, ...

    Comme Word ou Excel par exemple ou tu peux ouvrir plusieurs documents

    Dans Delphi 7, je crois qu'il existe un exemple d'application MDI

    A+
    Charly

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Albanie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2013
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    Avant d'afficher MainForm, est-ce-que je peux ajouter une fenêtre de de authentification (demande un mot passe) au démarrage
    Mais MainForm reste la form principale ?

  6. #6
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 390
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 390
    Points : 3 162
    Points
    3 162
    Par défaut
    Oui (tu peux chercher sur le forum et sur la FAQ)

    par exemple ici

    A+
    Charly

    PS : un sujet par post STP, cela facilite les recherches sur le forum

  7. #7
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Albanie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2013
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    merci tous

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 670
    Points : 10 677
    Points
    10 677
    Par défaut
    Citation Envoyé par unja2010 Voir le message
    Tout les autres forme son fermé automatiquement ???
    Parce que c'est une limitation de Windows Delphi (*) tu n'as qu'1 et 1 seule forme principale. Toutes les autres formes doivent être des boites de dialogues (modale ou pas)
    Et donc, lorsque tu fermes la forme principale, tu quittes l'application.

    Donc comment faire une application multi-fenêtres ?
    • Modifier la fonction main afin de créer/ afficher des boites de dialogues avant de créer la forme principale (plus l'ajout de tests si nécessaire)
    • Afficher ou cacher la forme principale afin d'afficher des boites de dialogue (mais la forme principale a la fâcheuse manie de s'afficher si elle est cachée avant de se fermer)
    • Faire une forme principale avec un container afin d'afficher dans le container les différentes formes nécessaires (et aussi adapter la taille de la forme principale, mais ce n'est pas 100% sans scintillements)


    Je te laisse chercher avec ton moteur de recherche Web favori et faire plein de tests


    *: Réponse de Andnotor, mais il me semble de souvenirs qu'il faudrait voir du côté de win32 parce si Delphi le limite c'est qu'il y a une raison

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 803
    Points : 13 493
    Points
    13 493
    Par défaut
    Citation Envoyé par foetus Voir le message
    Parce que c'est une limitation de Windows
    Non, c'est du Delphi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TCustomForm.Close;
    begin
    ...
      if Application.MainForm = Self then Application.Terminate
    ...
    end;

  10. #10
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Albanie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2013
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    merci

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

Discussions similaires

  1. Conserver des valeurs quand on ferme le programme
    Par Yepazix dans le forum Langage
    Réponses: 1
    Dernier message: 05/02/2006, 15h59
  2. Réponses: 10
    Dernier message: 02/02/2006, 10h42
  3. Exécuter une action quand on ferme le navigateur
    Par Leobaillard dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/01/2006, 12h41
  4. Réponses: 2
    Dernier message: 15/06/2005, 23h56
  5. Réponses: 4
    Dernier message: 24/06/2004, 13h20

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