salut tout le monde
qq'un qui me ? a ajouter un progressbar sur un spleeshscreen
merci d'avance
salut tout le monde
qq'un qui me ? a ajouter un progressbar sur un spleeshscreen
merci d'avance
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
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;
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.
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.![]()
Bonjour Edam,
avec ta solution, comment fais tu pour que la jauge s'ajuste à chaque création de fenêtre du projet ?
A+
Charly
remplacez "Progress.Position:= " par "Gauge.progress:= "
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 !
Et rien n'empêche de créer un TApplicationFormFactory qui encapsule CreateForm et Splash pour reduire encore plus le code utile !
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.
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
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
Partager