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 :

SplashScreen non totalement détruit


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 146
    Points : 116
    Points
    116
    Par défaut SplashScreen non totalement détruit
    J'ai créé un splashscreen pour l'ouverture d'une application mais, même s'il fait bien son travail, il ne se détruit pas automatiquement. La form principale s'ouvre bien mais si je déplace celle-ci avec la souris, je retrouve mon Splash à l'arrière. Voici le code du 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
     
     Application.Initialize;
      Splash := TSplash.create(Application);
      Splash.Show;
      Splash.Update;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TSplash, Splash);
      Application.CreateForm(TAboutBox, AboutBox);
      Application.CreateForm(TForm2, Form2);
      Application.CreateForm(TForm4, Form4);
      Splash.Close;
      Splash.Release;
      Splash.Hide;
      Application.Run;
    Lorsque je fais un et qu'ensuite je restore mon application, mon splashscreen est alors au dessus de ma form principale ce qui devient assez embêtant. Si quelqu'un a une idée.

    Duan

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Yep !

    J'ai ça dans un .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
    begin
      Screen.Cursor := crAppStart;
      Application.Initialize;
      Application.CreateForm(Tfrm_Splash, frm_Splash);
      frm_Splash.Show;
      frm_Splash.Update;
      Application.Title := 'MonProg';
      Application.HintPause := 0;
      Application.HintHidePause := 10000;
      Application.ShowMainForm := False;
      Application.CreateForm(TMainForm, MainForm);
      Screen.Cursor := crDefault;
      // impossible ici, à faire dans MainForm.Create
    //  frm_Splash.Hide;
    //  frm_Splash.Free;
      Application.Run;
    end.
    Mes 2 cts,
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Fait aussi attention que tu crée deux fois ta fiche SplashScreen, en effet une fois manuellement au début puis un peu plus bas avec Application.CreateForm(TSplash, Splash);

    Peut-être que c'est ça qui fiche le boxon.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bien vu pour les deux fois .

    de plus je mets toujours Free au lieu de Release;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Application.initialize;
    Splashform:=TSplashForm.create(Application);
    SplashForm.Show;
    Splashform.Update;
    ......
     
    SplashForm.Hide;
    SlashForm.free;
    Application.run;
    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 régulier
    Inscrit en
    Mai 2003
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 146
    Points : 116
    Points
    116
    Par défaut
    Merci à tous, c'était bien le double appel à la création du SplashScreen qui causait problème. Ceci me permettait toutefois à voir mon splash plus longtemps pour y lire quelques renseignements "Utile copyright ect..Ah la vanité
    J'ai mis se post comme résolu vu que la demande principale l'a bien été mais vos réponses me font poser 2 questions:

    1-J'ai mis un sleep de 2 secondes pour remplacer, est-ce une bonne solution...

    2- À SergioMaster : Pourquoi Free au lieu de Release ?

    L'aide Delphi ne préconise t-il pas l'emploi de Release au lieu de Free

    Voici le code retouché:
    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
     
      SetLastError(NO_ERROR);
      CreateMutex (nil, False, 'PapierPeint');
      if GetLastError = ERROR_ALREADY_EXISTS then Exit;
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Splash := TSplash.create(Application);
      Splash.Show;
      Splash.Update;
      Sleep(2000);
      Application.CreateForm(TAboutBox, AboutBox);
      Application.CreateForm(TForm2, Form2);
      Application.CreateForm(TForm4, Form4);
      Splash.Release;
      Application.Run;
    Encore une fois merci de vos réponses

    Duan

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

Discussions similaires

  1. Histoire de mémoire, lecture par bloc et non total
    Par hpl76 dans le forum Langage
    Réponses: 2
    Dernier message: 21/07/2011, 15h22
  2. Réponses: 3
    Dernier message: 23/09/2009, 10h33
  3. Réponses: 8
    Dernier message: 28/11/2007, 13h55
  4. Exclusion total de deux pthread [et non de partie critique]
    Par Thor Tillas dans le forum Réseau
    Réponses: 14
    Dernier message: 07/11/2006, 00h04
  5. Réponses: 5
    Dernier message: 24/10/2006, 11h56

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