Autor Beitrag
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mo 01.09.08 15:36 
Hi!

Ich habe mit Hilfe der Suche herausgefunden, wie ich einen SplashScreen in mein Programm einbauen kann. Darauf befindet sich ein Timer, der im OnTimer-Ereignis das ProgressBar (das oder der?) um 1 erhöht.

Nun kommt mein Problem:

Es tut sich dort rein gar nix und der SplashScreen verschwindet, bevor auch nur irgendwas mit dem ProgressBar passiert ist.

Was mache ich falsch?

Die bisherigen Suchergebnisse haben mich nicht wirklich vorangebracht.

Bisher sieht meine DPR so aus:

ausblenden volle Höhe 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:
program DeckButler;

uses
  Forms,
  DeckButler_Unit in 'DeckButler_Unit.pas' {Form1},
  MutexConfig in 'MutexConfig.pas',
  Sammlungen_Unit in 'Sammlungen_Unit.pas' {Form2},
  Splash_Unit in 'DB-Bilder\Splash_Unit.pas' {SplashForm};

{$R *.res}

begin

  /// SplashScreen erstellen
  SplashForm:=TSplashForm.Create(Application);

  Try
  /// SplashScreen anzeigen
  SplashForm.Show;
  SplashForm.Update;

  Application.Initialize;
  Application.Title := 'DeckButler 2.0 BETA';
  Application.HelpFile := 'D:\Alex\Delphi\Neue Projekte\DeckButler\DeckButler.chm';
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);


  /// SplashScreen ausblenden
  If SplashForm.ProgressBar1.Position=100
  Then SplashForm.Hide;

  Finally
  /// SplashScreen freigeben
  SplashForm.Free;
  End;
  Application.Run;
end.


Hinzu kommt halt, dass ich nicht weiß, ob ich evtl. in der DPR was verändern muss oder so. Würde ich hier z.B. ein Sleep einbauen (was mein Delphi mit ner Fehlermeldung verweigert), dann steht doch IMHO das gesamte Programm, oder? Also somit auch der SplashScreen.

Wäre nett, wenn mir jemand mal auf die Sprünge helfen würde. Ich brauche nur nen Denkanstoß, der mich weiterbringt, keinen vorgekauten Code zum kopieren und einfügen.

MfG

Terra

PS: Ich weiß, die Lesbarkeit meines Codes ist furchtbar. Ich hab's von der Schule her so gelernt und ich muss miur erstmal die Lesbarkeit einimpfen lassen.

_________________
Hasta La Victoria Siempre
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8553
Erhaltene Danke: 479

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 01.09.08 15:44 
Wenn du eine Fortschrittsanzeige im Splashscrren haben willst, würde ich das über ein paar Zwischenzeilen im Code von MainForm.Create machen. Eine Prozent-genaue Anzeige macht da eh keinen Sinn, von daher reicht es imho aus, wenn man da ab und zu Sachen ausgeben lässt wie "Einstellungen geladen", "verarbeite Einstellungen...", "Lade Daten...", etc.

btw.: Das ist ganz böse: ;-)
ausblenden Delphi-Quelltext
1:
Application.HelpFile := 'D:\Alex\Delphi\Neue Projekte\DeckButler\DeckButler.chm';					

_________________
We are, we were and will not be.
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mo 01.09.08 16:03 
Warum im Create-Ereignis der Main-Form? Die ist ja zu diesem Zeitpunkt noch gar nicht sichtbar, weil der SplashScreen "davor" ist.

Das mit der Hilfe-Datei habe ich entfernt, zumal die Hilfe-Datei ja gar nicht mehr exisitert. Warum ist das böse? Weil dieser Pfad nur bei mir existiert???

Terra

_________________
Hasta La Victoria Siempre
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mo 01.09.08 16:10 
user profile iconTerra23 hat folgendes geschrieben:
Weil dieser Pfad nur bei mir existiert?

Du hast es erraten ;)

Nimm lieber so 'was:
ausblenden Delphi-Quelltext
1:
2:
Application.HelpFile := ExtractFilePath(ParamStr(0)) + 'DeckButler.chm';
//nimmt den Ordner, in dem sich die .exe befindet und wählt darin eine Datei namens 'DeckButler.chm' als HelpFile aus


mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mo 01.09.08 16:15 
OK, aber das hilft mir trotzdem nicht bei meinem ProgressBar-Problem.

Der bewegt sich nicht und der SplashScreen verschwindet vorher.

Terra

_________________
Hasta La Victoria Siempre
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8553
Erhaltene Danke: 479

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 01.09.08 16:38 
Du erzeugst zuerst den Splashscreen und zeigst ihn an. Dann kommt der Rest, der wohl etwas länger dauert. Damit es dem User nicht langweilig wird, soll dabei der Splashscreen einen Fortschritt anzeigen, oder habe ich da was falsch verstanden?

Deine Methode funktioniert nicht, weil die Timer Message nicht verarbeitet wird, während die lange Create-Methode der Hauptform arbeitet. Wenn in dieser aber so etwas steht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
macheinbissel;
SplashScreen.Label1.Caption := 'Ein bissel was getan...';
Machnocheinbissel;
SplashScreen.Label1.Caption := 'Noch ein bissel was getan...';
Machnochmehr;
SplashScreen.Label1.Caption := 'Fast fertig...';


Dann sollte das funktionieren. Anstelle des Labels kann man natürlich auch ein Progressbar manuell hochfahren. Evtl. muss man auch das Neuzeichnen veranlassen mit SplashScreen.Update; oder so ähnlich.

_________________
We are, we were and will not be.
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mo 01.09.08 16:59 
Danke, Gausi.

Hab's inzwischen nach einigem hin und her herausgefunden und es klappt so, wie ich es mir vorgestellt habe.

Gruß,

Terra

_________________
Hasta La Victoria Siempre