![]() |
Re: Erbitte Hilfe bei MarqueeProgressBar !!
Estmal Thx. für eure tatkräftigen Ideen. Er kommt zwar nicht mit irgendwelchen Fehlern, jedoch ist es sowohl mit der DELAY-Variante als auch mit der TIMER-Variante so, dass der Splash nur noch kurz aufblitzt, und zum eigentlichen Program wechselt, wenn man da noch was "schrauben" könnte, wäre es denke ich fast perfekt.
|
Re: Erbitte Hilfe bei MarqueeProgressBar !!
Du darfst den Splashscreen natürlich NICHT gleich vor dem Application.Run freigeben.
Sondern erst später:
Delphi-Quellcode:
Noch besser wäre es sogar, wenn auf dem Splashscreen (wenn der Progressbar voll ist) sowas hier gemacht wird:
Splash := TSplash.Create(nil);
try Splash.Show; // andere Formulare erzeugen Application.Run; finally Splash.Free; end; "Splash.Close;" "Hauptfenster.Show" |
Re: Erbitte Hilfe bei MarqueeProgressBar !!
Hat schon ein bisschen weiter geholfen. Nun ist das Problem, dass der SplashScreen aufblendet udn gleichzeitig das eigentliche Programm, also es blendet sich praktisch die Form, die erst nach dem SplashScreen kommen soll ebenfalls auf und schiebt sich in den Vordergrund.
Delphi-Quellcode:
und er kommt, wenn ich auf dem Main Formular auf den Button gehe, der das Programm schließen soll mit einer "AccessViolation"program Project4; uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}, Unit3 in 'Unit3.pas' {Form3}, Unit4 in 'Unit4.pas' {Form4}, SplashScreen in 'SplashScreen.pas' {Form5}; {$R *.res} begin Application.Initialize; Form5 := TForm5.Create(Application); with TForm5.Create(nil)do try Form5.Show; Form5.Update; MarqueeProgressBar1.Max := 100; Show; // Startbildschirm mit ProgressBar anzeigen Update; // Anzeige von Form5 auslösen Application.Initialize; Application.Title := 'Project4'; Application.CreateForm(TForm4, Form4); MarqueeProgressBar1.StepBy(25); Application.CreateForm(TForm1, Form1); MarqueeProgressBar1.StepBy(25); Application.CreateForm(TForm3, Form3); MarqueeProgressBar1.StepBy(25); Application.CreateForm(TForm2, Form2); MarqueeProgressBar1.StepBy(25); Application.Run; Finally Form5.free; Form5.close; // Splash Form Form4.Show; // Main Form end; end. |
Re: Erbitte Hilfe bei MarqueeProgressBar !!
Delphi-Quellcode:
Wird wohl kaum funktionieren. Du kannst ein Formular ja schlecht noch schliessen, wenn Du den Speicher schon freigegeben hast. ;)
Form5.free;
Form5.close; // Splash Form Außerdem dachte ich auch eher an sowas hier auf dem Splash-Screen:
Delphi-Quellcode:
if ProgressBar.Percent = 100 then
begin Close; Application.Run; end; |
Re: Erbitte Hilfe bei MarqueeProgressBar !!
Das mit dem Speicher und dem Schließen leuchtet mir ein aber bei dem anderen muss ich leider sagen:
(Sry, aber :wiejetzt:) |
Re: Erbitte Hilfe bei MarqueeProgressBar !!
Ich versteh das nicht ganz, du scheinst ja gar keine MarqueeProgressBar zu verwenden, sondern eine normale :gruebel:
Wenn du eine MarqueeProgressBar verwendest brauchst du doch gar nicht von Position 0-100 zu kommen. Außerdem ist es wenig bis gar nicht zweckdienlich auf einem Splash Screen eine normale Progressbar anzuzeigen, denn wie schon gesagt weiß man ja nicht wann das Programm denn wirklich fertig ist. Wenn man bei einer Progressbar nicht abschätzen kann wie lange es noch dauert kann man sie sich sparen! Warum benutzt du die MarqueeProgressBar nicht einfach so wie sie vorgesehen ist? Einfach auf ein Formular, Timer dazu, der alle 50 ms die Bar eins erhöht und fertig. Und wenn du jetzt nicht irgendwelche Thread-Geschichten anfangen willst dann benutze doch einfach die Windows Threads: Pack den Splash Screen in ne eigene Exe, dann startest du die bei Programmstart (evtl mit Parameter) und vor dem Aufruf des Hauptformulars schließt du die Splash-Screen Exe wieder. Fertig. So hast du keine Probleme mit Refresh/Processmessage etc., da die exe alles selbst verwaltet. Ach so: Benutzt nie nie nie Sleep bei nem Splash Screen. Splash Screens sollen dem Benutzer bei längeren Programm-Starts zeigen dass noch was passiert und nicht dafür sorgen, dass der Programm Start länger dauert^^ |
Re: Erbitte Hilfe bei MarqueeProgressBar !!
Thx. für eure Hilfe, aber ich habe mich jetzt erstmal zumindest für den SplashScreen für die Variante entschieden, die man auch bei ADOBE Produkten im SplashScreen findet.
- Keine Progressbar sondern da wird dann praktisch in Worten angezeigt, was gerade geladen wird. - Das Label (was sich auf dem SplashScreen) wechselt dann halt immer mit jeder Form. z.b: Form1: Initialize... Form2: Reading fonts... - Komme ich ein bisschen besser mit zurecht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz