Bonjour,
Défi du dimanche, utiliser un splashscreen pour mon application bureau. Après avoir lu ce billet http://www.uweraabe.de/Blog/2016/01/...in-firemonkey/ il semble donc qu'il ne faille pas faire comme avec VCL c'est-à-dire directement dans le source du projet tel qu'indiué dans la FAQ pour VCL
Qu'à cela ne tienne puisque le billet est fort détaillé (et les sources téléchargeables) il ne faut pas longtemps pour réaliser le "défi".
Maintenant, la question comment intégrer mon datamodule dans tout ça, puisque c'est ce dernier qui ralenti mon démarrage.
J'ai tenté de le créer avant la forme principale mais ça plante; première hypothèse l'endroit où est déclaré l'utilisation de mon DataModule Interface ou Implémentation.
Jusqu'à présent la déclaration se trouvait dans la partie implémentation
Comme l'unité était créée avant la forme principale cela fonctionnait.
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 implementation uses UnitDatas; procedure TMain.FormCreate(Sender: TObject); var i : integer; begin Liste:=TDictionary<String,TForm>.Create; if ParamCount>0 then begin for i:=1 to ParamCount do btnEditFr3.Visible:=SameText(ParamStr(i),'-f'); end; // je vais insérer ici la création du datamodule if not Datas.ConnexionsOk then btnparametresClick(Sender); end;
En insérant la création du TDataModule Datas:=TDatas.Create(Application); cela fonctionne aussi
Comment procéder si je voulais créer le datamodule non pas à partir de la forme affichée mais à partir de mon unité SplashScreen ?
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
34
35
36
37
38
39
40
41
42
43 var FormSplash: TFormSplash; implementation uses System.Devices, UnitDatas, MainUnit; {$R *.fmx} resourcestring SNotSuitableForDevice = 'L''application n''est pas prévue pour de type d''appareil!'; procedure TFormSplash.FormCreate(Sender: TObject); begin StartupTimer.Enabled := false; StartupTimer.Interval := 500; // modifiable end; procedure TFormSplash.LoadMainForm; type TFormClass = class of TForm; var form: TForm; formClass: TFormClass; begin formClass := nil; case TDeviceInfo.ThisDevice.DeviceClass of TDeviceInfo.TDeviceClass.Desktop: formClass := TMain; // autres appareils end; /// Où créer le DataModule ? if formClass <> nil then begin form := formClass.Create(Application); form.Show; Application.MainForm := form; end else begin ShowMessage(SNotSuitableForDevice); end; Close; end;
Partager