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 :

Une progressbar sur un splash screen


Sujet :

Delphi

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 1
    Par défaut Une progressbar sur un splash screen
    salut tout le monde
    qq'un qui me ? a ajouter un progressbar sur un spleeshscreen
    merci d'avance

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 982
    Par défaut
    Peux-tu fournir le code du TSplashScreen (hérité d'une TForm), problablement inspiré des exemples existants sur le site !

    Ensuite, quel est ton problème exact ?
    Quelle est la difficulté précise ?

    J'ai tapé "Delphi + un progressbar sur une spleeshscreen" et :google m'a proposé "Delphi + un progressbar sur une splashscreen", trop fort, et l'on tombe sur How to put progress bar on splash screen ? - Delphi Pages Forums
    et plein d'autres pages à consulter

    Si tu as les moyens, tu peux acheter TMS TAdvSmoothSplashScreen, peut-être que Delphi XE propose les Smooth components par défaut !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2008
    Messages : 55
    Par défaut
    c'est très simple
    -ajoutter un composant TProgressBar (ou un Gauge) dans la fenetre Splasch
    - dans le menu principal de delphi allez a "voire/Unités " et selectionnez l'unité principale de votre projet
    -placer la progression de votre ProgressBar après chaque création d'une fenetre de votre programme , exemple de code :

    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
    with Tsplach.Create(nil) do
      try
      show;
      update;
      Application.Initialize;
      Application.Title := 'Titre de votre application';
      Application.CreateForm(TData, Data);
      ProgressBar .Position:=10;
      Application.CreateForm(TMain, Main);
      ProgressBar .Position:=20;
      Application.CreateForm(TState, State);
      ProgressBar .Position:=50;
      Application.CreateForm(TActual, Actual);
      Application.CreateForm(Tperso, perso);
      Application.CreateForm(Tmotpasse, motpasse);
      ProgressBar .Position:=60;
      Application.CreateForm(Tpropos, propos);
      ProgressBar .Position:=70;
      Application.CreateForm(TDossier, Dossier);
      ProgressBar .Positions:=80;
      Application.CreateForm(Tcentre, centre);
      ProgressBar .Position:=100;
      finally
      free;
      end;
      Application.Run;

  4. #4
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    on peut aussi le faire dans le projet

    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
    begin
      Application.Initialize;
      Application.Title := 'blbla';
     
    fSplach := TfSplash.Create(Application); { Création la fenêtre de Splash               }
      fSplach.Show;                                 { Affichage de cette fenêtre                  }
      fSplach.Progress.Maximum := 6;
      fSplach.Progress.Position := 1;
      fSplach.Update;
      Application.CreateForm(TfDivers, fDivers);
      fSplach.Progress.Position := 2;
      fSplach.Update;                               { forçage de l'affichage de la fenêtre        }
    //  MessageDlg('2', mtWarning, [mbOK], 0);
      Application.CreateForm(TfData, fData);
      fSplach.Progress.Position := 3;
      fSplach.Update;                               { forçage de l'affichage de la fenêtre        }
      Application.CreateForm(TfFicheObs_Data, fFicheObs_Data);
      fSplach.Progress.Position := 4;
      fSplach.Update;                               { forçage de l'affichage de la fenêtre        }
      Application.CreateForm(TfAffiche_Data, fAffiche_Data);
      fSplach.Progress.Position := 5;
      fSplach.Update;                               { forçage de l'affichage de la fenêtre        }
    //  MessageDlg('3', mtWarning, [mbOK], 0);
      Application.CreateForm(TfPrincipal, fPrincipal);
      fSplach.Progress.Position := 6;
      fSplach.Update;                               { forçage de l'affichage de la fenêtre        }
      fSplach.Progress.Position := 7;
      fSplach.Update;                               { forçage de l'affichage de la fenêtre        }
      fSplach.Close;                                { Fermeture la fenêtre de Splash              }
      fSplach.Release;                              { Destruction de la fenêtre                   }
      Application.Initialize;
      Application.Run;
    end.

  5. #5
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    pour moi je préfère mettre tout le code création et de destruction de la forme de spalachscree dans l'unité de SScren pour qu'elle être autonome et réutilisable.

  6. #6
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 471
    Par défaut
    Bonjour Edam,

    avec ta solution, comment fais tu pour que la jauge s'ajuste à chaque création de fenêtre du projet ?

    A+
    Charly

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2008
    Messages : 55
    Par défaut
    remplacez "Progress.Position:= " par "Gauge.progress:= "

  8. #8
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 982
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    avec ta solution, comment fais tu pour que la jauge s'ajuste à chaque création de fenêtre du projet ?
    Charly, tu confonds encapsulation et utilisation !

    Je suis d'accord avec Edam, un objet réutilisable !

    J'ai quelques règles quand je peux concevoir un projet depuis le début (je ne l'ai pas fait depuis 8 ans, je ne fais que maintenir de l'existant)
    1- Une seule ligne de code supplémentaire dans le DPR, je préfère déporter dans une classe TMonProjet (singleton servant de façade vers d'autres objets) et une fonction Initialize();
    2- je n'ai souvent qu'un seul CreateForm() dans le DPR, le reste des fenêtres (ou DataModule) étant géré avec plus de finesse, je suis partisant des principes de LazyLoading et LazyInitialization
    3- Un SplashScreen est un objet comme un autre, tu peux lui ajouter des propriétés pour gérer l'image, le message et la progression, perso, j'ai deux niveaux, la progression globale avec StepIt() et une progression interne avec SubStepIt()

    avec un objet bien conçu tu pourrais écrire cela !

    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
     
    begin
      Splash.Show(6); // Allocation Singleton via un GetInstance interne
     
      Application.CreateForm(TfDivers, fDivers);
      Splash.StepIt(); 
     
      Application.CreateForm(TfData, fData);
      Splash.StepIt(); 
     
      Application.CreateForm(TfFicheObs_Data, fFicheObs_Data);
      Splash.StepIt(); 
     
      Application.CreateForm(TfAffiche_Data, fAffiche_Data);
      Splash.StepIt(); 
     
      Application.CreateForm(TfPrincipal, fPrincipal);
      Splash.Hide(); // Libère le Splash
     
      Application.Initialize;
      Application.Run;
    end.
    Et rien n'empêche de créer un TApplicationFormFactory qui encapsule CreateForm et Splash pour reduire encore plus le code utile !

    Splash est une fonction, comme Printers par exemple, qui renvoie l'instance du Splash (un singleton)

    Je préfère des codes courts, permettant de lire facilement le code, chaque niveau d'abstraction apportant de nouvelles fonctionnalités, qu'il n'est pas utile de connaître jusqu'au bout si le développeur ne doit que faire des améliorations métiers !
    C'est la notion de FrameWork !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    Bonjour Edam,

    avec ta solution, comment fais tu pour que la jauge s'ajuste à chaque création de fenêtre du projet ?

    A+
    Charly
    Citation Envoyé par ShaiLeTroll Voir le message
    2- je n'ai souvent qu'un seul CreateForm() dans le DPR, le reste des fenêtres (ou DataModule) étant géré avec plus de finesse, je suis partisant des principes de LazyLoading et LazyInitialization
    pourquoi charger tout tes formes au début du programme??

  10. #10
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 982
    Par défaut
    Citation Envoyé par edam Voir le message
    pourquoi charger tout tes formes au début du programme??
    Parce qu'il faut déjà avoir l'idée de retirer les fenêtres de la création automatique !
    Peut-être même savoir qu'il est possible de les retirer !

    Virer le CreateForm et la variable globale de Form est la 1ère chose que je fais lorsque je crée une nouvelle fiche !
    Moi, je ne peux pas te répondre, charger tout au démarrage c'est à l'opposé de principes de LazyLoading et LazyInitialization qui veut l'on ne charge une ressource qu'au dernier moment juste avant de l'utiliser !
    Surtout que j'ai des programmes avec une bonne centaine de fenêtre !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Affichage d'un ProgressBar sur une form splash
    Par colorid dans le forum Langage
    Réponses: 3
    Dernier message: 12/10/2012, 16h43
  2. Réponses: 2
    Dernier message: 04/01/2011, 17h54
  3. gauge dans une splash screen
    Par lassmust dans le forum Delphi
    Réponses: 1
    Dernier message: 10/07/2006, 10h24
  4. [splash screen]afficher une image à l'écran
    Par Invité dans le forum 2D
    Réponses: 2
    Dernier message: 04/03/2006, 22h40
  5. affichage de controles sur un splash screen
    Par shrek dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/11/2003, 19h59

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