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

Composants VCL Delphi Discussion :

Réduire la fenêtre principale mais pas une fenêtre enfant


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut Réduire la fenêtre principale mais pas une fenêtre enfant
    Bonjour
    Je bute sur un petit problème : Comment faire pour réduire une fenêtre principale sans que les fenêtres enfants se réduisent en même temps ?
    Je parle du bouton _ qui se trouve en haut à droite des fenêtres du programme.
    Avec ce petit bouton, on réduire chacune des fenêtres enfants séparément mais si on réduit la fenêtre principale, toutes les fenêtres enfants se réduisent et ça me gène dans une application.
    C'est peut-être un problème purement "Windows" et pas Delphi ! A moins qu'il y ait une solution software qui résolve cette question.
    Gab

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 638
    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 638
    Points : 25 357
    Points
    25 357
    Par défaut
    Etant un grand partisan du ShowModal, je n'ai jamais ce problème
    Lorsque je dois faire un SDI avec plusieurs fenêtres actives, justement la réduction de la fenêtre pour réduire plusieurs fenêtres c'est plutôt pratique (c'est le cas de Delphi en mode Flottant)

    Il y a surement une astuce avec SetLongWindow mais sinon, tu crées une MainForm, une fausse, vide (par exemple juste un Notify Icon)
    Toutes les autres fenêtres sont des fenêtres secondaires et donc indépendantes
    Lorsque tu fermes la dernière fenêtre secondaire, tu forces la fermeture de la MainForm
    Je suis justement sur un module qui fonctionne comme cela car c'est un module lancé principalement en ligne de commande et taches planifiées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Application.MainFormOnTaskbar := False;
      Application.ShowMainForm := False;

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut Réduire la fenêtre principale mais pas une fenêtre enfant
    Merci pour la suggestion. Je vais tester ça.
    Gab

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Points : 209
    Points
    209
    Par défaut
    Bonjour

    une solution que j'utilise
    il faut surcharger la procedure CreateParams de la seconde form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      protected
        procedure CreateParams(var Params: TCreateParams); override;
    dans le code il faut mettre ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm2.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.WndParent := 0;
    end;

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 638
    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 638
    Points : 25 357
    Points
    25 357
    Par défaut
    Très bonne remarque de fbalien

    Pour justement, un module qui peut se relancer lui même dans un mode spécial en affichant directement une fenêtre fille sans la MainForm, j'ai écrit ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //---------------------------------------------------------------------------
    procedure TModuleLxxxorm.CreateParams(var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
     
      if not Assigned(Application.MainForm) or not Application.MainForm.Visible then
        Params.WndParent := GetDesktopWindow();
    end;

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/02/2018, 18h26
  2. [Graphics View] Insérer un item à partir d'une fenêtre de dialogue dans la fenêtre principale
    Par skanderbahloul dans le forum Débuter
    Réponses: 5
    Dernier message: 25/11/2014, 19h40
  3. Réponses: 3
    Dernier message: 10/05/2012, 14h35
  4. Réponses: 2
    Dernier message: 24/09/2008, 20h35
  5. Réponses: 8
    Dernier message: 12/06/2007, 16h10

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