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 :

Problème de spashscreen


Sujet :

Langage Delphi

  1. #1
    Membre confirmé Avatar de vg-matrix
    Inscrit en
    Février 2007
    Messages
    1 220
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2007
    Messages : 1 220
    Points : 612
    Points
    612
    Par défaut Problème de spashscreen
    Salut à vous.
    J'ai un soucis avec mon splashscreen. Voici un extrait du code du projet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Application.Initialize;
      Fensplash := TFensplash.Create(Application);
      Fensplash.Show;
      Fensplash.Update;
      ...
      Application.CreateForm(TFensplash, Fensplash);
      Fensplash.Close;
      Fensplash.Release;
      Application.Run;
    Puis l'évènement OnCreate du splashscreen
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TFensplash.FormCreate(Sender: TObject);
    begin
      sleep(3000);
      self.Release; //si je ne le fait pas, le splash reste affiché sur ma fenêtre principale
    end;
    Mais le splash n'est pas détruit à l'apparition de la fenêtre principale et j'ignore pourquoi.
    Quelqu'un pourrait-il m'aider?
    Il est difficile de retrouver ses erreurs lorsqu'on est persuadé que son code est juste...

    Groupe des développeurs ivoiriens

  2. #2
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    méthode :
    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
     
    program Project1; 
    uses
    Forms,
    Windows, //Ajout de l'unité "Windows" pour la fonction sleep
    Unit1 in 'Unit1.pas' {Form1},
    Unit2 in 'Unit2.pas' {Form2};
    {$R *.RES}
    begin
     Form2:= TForm2.Create(Application); //Crée la fenêtre Form2
     try 
      Form2.Show; //Affiche Form2
      Application.Initialize; 
      Form2.Refresh; //Redessine Form2
      Sleep(3000); //Attend 3 secondes
      Application.CreateForm(TForm1, Form1);
      Form2.Hide; //Cache la form2
     finally
      Form2.Free; //Libère Form2
     end; 
     Application.Run; 
    end.

  3. #3
    Membre confirmé Avatar de vg-matrix
    Inscrit en
    Février 2007
    Messages
    1 220
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2007
    Messages : 1 220
    Points : 612
    Points
    612
    Par défaut
    Quand j'applique votre solution, le splashscreen reste affiché derrière la fenêtre principale. C'est bien visible puisque je suis sous Windows 7.
    Il est difficile de retrouver ses erreurs lorsqu'on est persuadé que son code est juste...

    Groupe des développeurs ivoiriens

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 091
    Points : 41 069
    Points
    41 069
    Billets dans le blog
    62
    Par défaut
    plutôt que dans le onCreate , j'aurais mis le sleep dans le onActivate
    et rien dans le OnCreate !
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut,

    chose etrange, au départ tu la créée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Fensplash := TFensplash.Create(Application);
    Et tu la recréer...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Application.CreateForm(TFensplash, Fensplash);
    ???

    Voilà ce que j'utilise et qui fonctionne sur tous les windows

    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
      FSplashScreen := TFSplashScreen.Create(Application); // On crée la fenetre de Splash
      FSplashScreen.Show; // affichage de cette fenetre
      FSplashScreen.Update; // On force l'affichage de la fenetre (sinon elle n'apparait que partiellement)
     
      Application.Initialize;
     
        Application.Title := 'Programme';
     
        FSplashScreen.DebModules; // Procédure interne au Splashscreen
        Application.CreateForm(TFData, FData); // DataModule
        FSplashScreen.FinModules; // Procédure interne au Splashscreen
     
    // ...
     
        FSplashScreen.Close;  // Fermeture la fenêtre de Splash
        FSplashScreen.Release;  // Destruction de la fenêtre
     
        Application.MainFormOnTaskbar := True;
        Application.CreateForm(TFPrincipal, FPrincipal);
     
        Application.Run;
    Ma form Splashscreen ne necessite aucune action dans le OnCreate ou OnClose, ou autre...

    Bye

  6. #6
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 081
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    J'ai eu le même problème. Je suis parvenu a mes fins en
    1. mettant ApplicationMainFormOnTaskbar:=false;
    2. En ne générant pas automatiquement la form splashscreen (projet -> options -> Fiches)
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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