Entwickler-Ecke
Sonstiges (Delphi) - Splash Screen vor "Modul laden: ...." anzeigen
Petersen - Do 21.10.10 17:26
Titel: Splash Screen vor "Modul laden: ...." anzeigen
Hallo
ich hoffe, Ihr könnt mir bei folgendem Problem eine Hilfestellung geben:
angenommen ein umfangreiches Delphi-Programm benötigt extrem lange, bis es am Punkt "Application.Initialize;" angekommen ist - oder anders gesagt: lässt man das Programm in der Entwicklungsumgebung laufen, erscheinen nach Compilieren und Linken im Meldungsfenster hunderte Meldungen der Art "Modul laden: xxxxx" bevor "Application.Initialize;" abgearbeitet wird. Es sind wohl alles DLLs die dort geladen werden, die von den hunderten Komponenten benötigt werden, die das Programm einsetzt.
Meine Frage dazu:
gibt es eine Möglichkeit, ein Splash Screen so zu programmieren, das es vor diesem Vorgang angezeigt wird und wäre es evtl. möglich, die Information welches Modul gerade geladen wird in diesem Splash Screen anzuzeigen?
Danke & Gruß
bummi - Do 21.10.10 17:44
Geht problemlos ...
Miniblöddemo:
Delphi-Quelltext
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: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| program Project1;
uses Forms,windows,sysutils, Unit1 in 'Unit1.pas' , Unit2 in 'Unit2.pas' ;
{$R *.res}
begin Form2 := TForm2.Create(Application); Form2.Show; sleep(2000); Application.Initialize; Application.MainFormOnTaskbar := True; Form2.Hide; Application.CreateForm(TForm1, Form1); Application.Run; Form2.Free; end.
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation uses unit2; {$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin form2.Show; end;
procedure TForm1.Button2Click(Sender: TObject); begin form2.hide; end;
end. |
elundril - Do 21.10.10 17:46
Das Sleep könnte man sich auch sparen, weil es eigentlich nur nochmehr verzögert. Und da du eh schon lange brauchst um das Projekt zu laden, würd sich das nur noch mehr verzögern.
lg elundril
bummi - Do 21.10.10 18:49
machst Du Dich lustig über mich??
Das Sleep ist nur drin um die Funtionalität zu demonstrieren und steht für seine aufwändigen Initalisierungen....
jaenicke - Do 21.10.10 19:02
bummi hat folgendes geschrieben : |
| und steht für seine aufwändigen Initalisierungen.... |
Das hast du falsch verstanden. Die laufen alle bevor dein Splashscreen überhaupt greift...
Um das zu realisieren muss der Code in den initialization Abschnitt einer Unit und diese muss als erste Unit im Projektquelltext eingebunden werden. Aber auch dann werden vorher schon Initialisierungen laufen. Daran kann man aber nichts ändern.
Der erste Punkt zum Eingreifen ist der initialization Abschnitt der ersten Unit.
elundril - Do 21.10.10 19:05
bummi hat folgendes geschrieben : |
machst Du Dich lustig über mich??
Das Sleep ist nur drin um die Funtionalität zu demonstrieren und steht für seine aufwändigen Initalisierungen.... |
Dann schreibt man das normalerweise als Kommentar dazu oder schreibt nur ein Kommentar. woher soll das irgendwer ahnen was du mit dem Sleep bezweckst.
lg elundril
bummi - Do 21.10.10 19:05
@jaenicke
ok, ich dachte er initalisert im Projektcode, also da wo mein sleep steht.
@elundril
sorry, schien mir zu offensichtlich
Petersen - Fr 22.10.10 10:02
Hallo!
Der Tipp von "jaenicke" hat mich schon einmal eine riesen Schritt weitergebracht; also den "initialization"-Abschnitt einer Unit nutzen und diese als erste in das Projekt einbinden!
Vielen Dank für die schnellen Antworten - super Forum!
Danke & Gruß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!