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 FMX Delphi Discussion :

Splash screen dans une App FMX


Sujet :

Composants FMX Delphi

  1. #1
    Membre éclairé Avatar de alves1993
    Homme Profil pro
    Développeur Java/Dart/Javascript/Android (FullStack)
    Inscrit en
    Décembre 2012
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Java/Dart/Javascript/Android (FullStack)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 222
    Points : 659
    Points
    659
    Par défaut Splash screen dans une App FMX
    Salut sa fait un bout de temps que j'essai de fait un simple splash screen dans une App FMX.

    Mon problème est que le splash screen ne s'affiche pas

    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
     
     
    var
      splash : TFormSplash;
     
    begin
      Application.Initialize;
     
      splash := TFormSplash.Create(nil);
      splash.Show;
      // splash.update        {la fonction update n'existe pas en FMX }
      sleep(3000); 
      Application.CreateForm(TFormMain, FormMain);
     
      splash.Close;
      FreeAndNil(splash);
     
      Application.Run;
    Voici mon bout de code. l'erreur vient il de moi ??

    Merci pour vos réponse cordialement.
    Un geek ne vieillit pas, il se met à jour.

    Pour plus d'informations sur Android regarder la faq Android.
    Ensuite les tutoriels Android sont disponibles ici
    Pour les mecs, qui n'arrivent pas toujours à digérer le Javascript, Dart peut-être une solution pour vous.

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    sleep ne devrait pas exister...ça pousse les gens à faire des bêtises

    l'application DOIT être interactive, elle DOIT répondre aux messages du système, Sleep() c'est juste une façon de dire "ne fait rien, mais alors vraiment rien" pendant le temps indiqué...or afficher un Splashscreen c'est déjà faire quelque chose.

    donc le Splashscreen doit être un écran avec un Timer qui va déclencher autre chose au bout d'un laps de temps...ou simplement attendre qu'un tâche secondaire d'initialisation se termine.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Ou alors il suffit de rajouter Application.ProcessMessages après le Show pour être sur qu'il soit effectué avant le Sleep.

    Je procède comme suit et cela fonctionne trés bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      FormSplash := TFormSplash.Create(Nil);
      FormSplash.Show;
      Application.ProcessMessages;
      Sleep(1500);
      FormSplash.Close;
      FormSplash.Release;

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 392
    Points : 635
    Points
    635
    Par défaut
    Depuis XE7 tu peux indiquer une image qui servira d'accueil, il faut aller dans les options du projet puis dans application

    pour les versions plus anciennes voir http://blong.com/Articles/DelphiXE6A...lashScreen.htm

    le problème avec l'utilisation d'une forme c'est qu'il y a quand même un écran noir le temps que la librairie firemonkey se charge

  5. #5
    Membre éclairé Avatar de alves1993
    Homme Profil pro
    Développeur Java/Dart/Javascript/Android (FullStack)
    Inscrit en
    Décembre 2012
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Java/Dart/Javascript/Android (FullStack)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 222
    Points : 659
    Points
    659
    Par défaut
    OK merci Mr free07 votre solution passe
    Un geek ne vieillit pas, il se met à jour.

    Pour plus d'informations sur Android regarder la faq Android.
    Ensuite les tutoriels Android sont disponibles ici
    Pour les mecs, qui n'arrivent pas toujours à digérer le Javascript, Dart peut-être une solution pour vous.

  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par alves1993 Voir le message
    OK merci Mr free07 votre solution passe
    oui, mais elle est passable il suffit de faire passer une autre fenêtre devant le SplahScreen pour que celui-ci déconne, devienne blanc (ou pas selon la version de Windows, vu que Aero garde une photo de la fenêtre ça peut encore faire illusion, mais la souris ne réagit pas et le système pourrait considérer que l'application est plantée car elle ne répond plus)
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre éclairé Avatar de alves1993
    Homme Profil pro
    Développeur Java/Dart/Javascript/Android (FullStack)
    Inscrit en
    Décembre 2012
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Java/Dart/Javascript/Android (FullStack)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 222
    Points : 659
    Points
    659
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    oui, mais elle est passable il suffit de faire passer une autre fenêtre devant le SplahScreen pour que celui-ci déconne, devienne blanc (ou pas selon la version de Windows, vu que Aero garde une photo de la fenêtre ça peut encore faire illusion, mais la souris ne réagit pas et le système pourrait considérer que l'application est plantée car elle ne répond plus)
    héé bain vous me préconiser quel solution.

    Merci cordialement.
    Un geek ne vieillit pas, il se met à jour.

    Pour plus d'informations sur Android regarder la faq Android.
    Ensuite les tutoriels Android sont disponibles ici
    Pour les mecs, qui n'arrivent pas toujours à digérer le Javascript, Dart peut-être une solution pour vous.

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par alves1993 Voir le message
    héé bain vous me préconiser quel solution.

    Merci cordialement.
    je recommande de relire mon premier message
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre éclairé Avatar de alves1993
    Homme Profil pro
    Développeur Java/Dart/Javascript/Android (FullStack)
    Inscrit en
    Décembre 2012
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Java/Dart/Javascript/Android (FullStack)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 222
    Points : 659
    Points
    659
    Par défaut
    Ok compris j'ai trouvé une solution plus simples

    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
     
     
    var
      FormSplash: TFormSplash;
     
    implementation
     
    {$R *.fmx}
     
     
    procedure TFormSplash.FormShow(Sender: TObject);
    begin
       timer1.Interval := 3000;
    end;
     
    procedure TFormSplash.Timer1Timer(Sender: TObject);
    begin
        Timer1.Enabled := False;
        self.Close;
    end;
    ensuite


    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
     
     
    var
      splash : TFormSplash;
     
    begin
      Application.Initialize;
     
      splash := TFormSplash.Create(nil);
     
      try
     
          splash.ShowModal;
     
      finally
     
          FreeAndNil(splash);
     
      end;
          Application.CreateForm(TFormMain, FormMain);
          Application.CreateForm(TDataModule1, DataModule1);
          Application.CreateForm(TDataModule2, DataModule2);
          Application.CreateForm(TFormRecherche, FormRecherche);
     
          Application.Run;
    Merci encore Mr Paul TOTH pour votre aide
    Un geek ne vieillit pas, il se met à jour.

    Pour plus d'informations sur Android regarder la faq Android.
    Ensuite les tutoriels Android sont disponibles ici
    Pour les mecs, qui n'arrivent pas toujours à digérer le Javascript, Dart peut-être une solution pour vous.

  10. #10
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    oui, mais elle est passable il suffit de faire passer une autre fenêtre devant le SplahScreen pour que celui-ci déconne, devienne blanc (ou pas selon la version de Windows, vu que Aero garde une photo de la fenêtre ça peut encore faire illusion, mais la souris ne réagit pas et le système pourrait considérer que l'application est plantée car elle ne répond plus)
    Ok, je ne savais pas, je n'ai jamais eu de retour sur ce problème, peut être que certains l'ont constaté mais n'ont pas voulu le signaler.

    Par curiosité j'ai essayé de faire l'essai en augmentant le sleep à 15 secondes pour avoir le temps de vérifier mais je n'ai pas constaté de problème sur Windows 7, le splashscreen est bien rafraichit lorsque je fais passer d'autres fenêtres par dessus, peut être que ce sont d'autres version d'os qui sont impactés par ce problème ?

    De toute façon et par précaution, je vais prendre aussi la solution du timer.

  11. #11
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par free07 Voir le message
    Ok, je ne savais pas, je n'ai jamais eu de retour sur ce problème, peut être que certains l'ont constaté mais n'ont pas voulu le signaler.

    Par curiosité j'ai essayé de faire l'essai en augmentant le sleep à 15 secondes pour avoir le temps de vérifier mais je n'ai pas constaté de problème sur Windows 7, le splashscreen est bien rafraichit lorsque je fais passer d'autres fenêtres par dessus, peut être que ce sont d'autres version d'os qui sont impactés par ce problème ?

    De toute façon et par précaution, je vais prendre aussi la solution du timer.
    oui Aero ajoute une couche graphique qui gère totalement différemment les fenêtres à l'écran, donc même une application réellement plantée gardera son affichage contrairement aux précédentes versions de Windows ou la fenêtre devient tout blanche car elle ne répond plus au message WM_PAINT.

    mais si cette fenêtre laisse apparaître une barre de titre, on ne pourra même pas la déplacer, les boutons ne réagiront pas...pas plus qu'un Alt+F4 pour fermer la fenêtre.

    faites le tests ci-dessous avec deux fiches standards, on ne peut rien faire de Form2 et au bout d'un moment le titre devient "Form2 (Ne répond pas)"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    uses Unit2;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Form2 := Tform2.Create(Self);
      Form2.Show;
      Application.ProcessMessages;
      Sleep(15000);
      Form2.Free;
    end;
    EDIT: au passage il faut être vicieux pour mettre un Splashscreen qui ne fait rien, ils sont généralement utilisés pour faire patienter pendant l'initialisation de l'application, cf Delphi et le chargement des modules.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  12. #12
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Citation Envoyé par exoseven Voir le message
    Depuis XE7 tu peux indiquer une image qui servira d'accueil, il faut aller dans les options du projet puis dans application
    Oui mais ce ne sont que pour les applications mobiles ( android et ios ) par contre pour os x et windows, on ne peut que modifier l'icone associé à l'application, ou alors j'ai rien compris à l'aide relatif à ces options.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 392
    Points : 635
    Points
    635
    Par défaut
    oui j'ai lu la question trop rapidement je croyait qu'il voulait un splash pour Android

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

Discussions similaires

  1. champ référence dans une app queryonly
    Par NorexaMS dans le forum Bases de données
    Réponses: 6
    Dernier message: 13/03/2009, 21h51
  2. Splash screen dans un thread?
    Par Crayon dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/02/2007, 11h58
  3. Comment afficher un page html dans une apps?
    Par bygui dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 07/06/2006, 10h40
  4. [splash screen]afficher une image à l'écran
    Par Invité dans le forum 2D
    Réponses: 2
    Dernier message: 04/03/2006, 22h40
  5. Probleme d'un datamodule commun dans une app MDI
    Par Riko dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/10/2005, 10h13

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