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 :

Minimiser une appli à son lancement


Sujet :

Delphi

  1. #1
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut Minimiser une appli à son lancement
    Bonjour,

    Je suis sur un projet composé de plusieurs fenêtres:
    - fmMian, form principale
    - fmBrowser,
    - fmconfig,
    - etc...

    Je voudrais, au démarrage de mon application, que celle-ci soit réduite à l'état d'icone tray.

    Pas de problème pour l'icone, tout est déja fait et géré, par contre, je déspère à masquer, dès le départ ma fiche fmMain...

    Voici le code de mon projet (le fichier .dpr):

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    program TEST;
     
    uses
      Forms,
      splash in 'splash.pas' {SplashForm},
      Main in 'Main.pas' {fmMain},
      Browser in 'Browser.pas' {fmBrowser},
      Config in 'Config.pas' {fmConfig},
      Utils in 'Utils.pas',
      SysUtils,
      AlertMsg in 'AlertMsg.pas' {AlertMsgF},
      GUI in 'GUI.pas',
      save in 'save.pas',
      OgMessages in 'OgMessages.pas',
      global in 'global.pas',
      crypt in 'crypt.pas',
      HSLUtils in 'HSLUtils.pas';
     
    {$R *.res}
     
    var
      SplashForm : TSplashForm;
      i: integer;
    begin
      Application.Initialize;
      Application.ShowMainForm := FALSE;  // Ceci devrait, théoriquement, masquer mes fiches, mais avec ou sans, c'est pareil
     
      // Création d'une splash form
      SplashForm := TsplashForm.create(application);
      SplashForm.Show;
      SplashForm.Update; // Force le dessin du splash screen
     
      try
        Application.Title := 'Test';
     
        // Le sleep permet d'afficher ma splash form au moins 1 seconde
        Sleep(1000);
        SplashForm.close;
     
        // Ici, je créer mes différentes fiches
        Application.CreateForm(TfmMain, fmMain);
        Application.CreateForm(TfmBrowser, fmBrowser);
        Application.CreateForm(TfmConfig, fmConfig);
        Application.CreateForm(TAlertMsgF, AlertMsgF);
     
        // Et la, je masque les fiches secondaires
        fmBrowser.Hide;
        fmConfig.Hide;
     
      finally
        SplashForm.Release;
      end;
     
      Application.Run;
    end.
    Le problème, c'est que malgrès l'utilisation de Application.ShowMainForm := FALSE;, ma fiche fmMain est visible.

    J'ai alors tenté de masquer la fiche en utilisant fmMain.hide, mais on a quand même le temps d'appercevoir la fiche avant que celle-ci soit masquée... Pas très esthétique!

    Je ne sais vraiment plus quoi faire, j'ai regardé sur pas mal de sites, mais rien n'y fait, je dois vraiment avoir un problème de compréhension sur la création des fiches au lancement de l'application...

    Bref, j'aurais besoin d'un coup de main, je reste à disposition pour apporter tout complément d'information!

    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut Problème pour minimiser une appli à son lancement
    Bonjour,

    As-tu essayé de mettre la propriété Visible de ta fiche principale à false ? (Tout en conservant la ligne "Application.ShowMainForm := False" dans le source de ton projet)
    Tu la repositionne la propriété à True lorsque tu veux la rendre visible.
    J'ai fait le test, chez moi ça fonctionne.

    Bon courage.
    Manu.

  3. #3
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut
    Non, malheureusement, cela ne fonctionne pas...

    Ce qui m'étonne, c'est que j'ai déja fait un projet est que cela fonctionnait parfaitement.

    La, pour les essais, j'ai supprimé la splash form pour être sur que ça ne vient pas de ça...

    Ensuite, j'ai vidé le contenu de fmMain.Create, dès fois que...

    Puis, j'ai passé tous les composants à visible := false, mais toujours sans succès!

    Bref, je commence à désespérer!!!

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Le problème vient selon moi du fait que tes "sous" fenêtres
    fmBrowser,fmConfig,etc. on leur propriété visible=TRUE.

    Selon moi, du moment qu'une fenêtre autre que la principale s'affiche,
    la form principale s'affiche aussi.

    Donc met les propriétés visible à FALSE pour toutes les fenêtres
    et enlève dans ton code

    fmBrowser.Hide;
    fmConfig.Hide;

    maintenant, ca devrait fonctionner...?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Pour savoir d'où vient le problème, tu peux aussi mettre un point d'arrêt dans la procedure TCustomForm.SetVisible de l'unité Forms conditionné par : Self.name = 'fmMain' (si le nom de ta fenêtre principale est bien 'fmMain'). En consultant la pile d'appels au moment de l'arrêt du programme tu pourras déterminer à quel moment ta fenêtre devient visible ...
    Bonne chance !

  6. #6
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par Eric Boisvert
    Le problème vient selon moi du fait que tes "sous" fenêtres
    fmBrowser,fmConfig,etc. on leur propriété visible=TRUE.

    Selon moi, du moment qu'une fenêtre autre que la principale s'affiche,
    la form principale s'affiche aussi.

    Donc met les propriétés visible à FALSE pour toutes les fenêtres
    et enlève dans ton code

    fmBrowser.Hide;
    fmConfig.Hide;

    maintenant, ca devrait fonctionner...?
    Leurs propriétés étaient déjà à FALSE...

    Le coup du hidden, c'était pour être sur que ces fiches ne généraient pas le problème...

  7. #7
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut
    Bon, je ne comprends vraiement plus rien...

    J'ai placé un point d'arrêt sur la routine TCustomForm.SetVisible et... petite croix verte indiquant que la routin n'est pas appelée!

    Effectivement, je me suis alors aperçu que... ma form avait bien été masquée dès le démarrage!

    Bref, un coup ça marche, un coup ça marche pas!

    Me reste plus qu'à ajouter point par point ce que j'ai mis en commentaire pour trouver le fautif!

    Je vous donnerai les résultats avant de classer le topic comme résolu!

    Merci en tout cas de vous être penché sur ce problème, mais soit je suis fatigué et je ne vois plus ien, soit quelque chose m'échappe... Je pencherais pour la première option

    Edit: bon, j'ai trouvé le problème, honte à moi! Effectivement, une fiche que j'utilisais pour des tests avait sa propriété visible à FALSE... merci beaucoup!

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

Discussions similaires

  1. [XL-2007] Remplir une feuille à son lancement.
    Par cedcyr dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 14/03/2013, 00h23
  2. [DELPHI 5] Minimiser une appli externe
    Par VincentB dans le forum Delphi
    Réponses: 2
    Dernier message: 15/05/2006, 16h54
  3. [VB.NET]Lancement auto d'une appli
    Par smyley dans le forum Windows Forms
    Réponses: 14
    Dernier message: 25/04/2006, 09h50
  4. Lancement d'une appli win32 en ligne de commande
    Par Invité(e) dans le forum Windows
    Réponses: 2
    Dernier message: 16/09/2005, 13h05
  5. [Plugin][Débutant] Lancement d'une appli Java avec un plugin
    Par antares24 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 29/07/2004, 15h18

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