Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi animierter Splashscreen mit mehreren Timern für Animation (https://www.delphipraxis.net/64656-animierter-splashscreen-mit-mehreren-timern-fuer-animation.html)

PAX 6. Mär 2006 17:38


animierter Splashscreen mit mehreren Timern für Animation
 
nabend freunde!

ich verwende in meinem programm beim start einen splash-screen, welchen ich ein bisschen animiert habe. dafür brauchte ich mehrere timer. leider musste ich feststellen, dass wenn ich diesen splash einbaue, die ontimer-ereignisse nicht anspringen. ich hab gehört, dass dies erst ab application.run möglich sein soll?

nagut. dann bräuchte ich eine alternative variante, den splash zu realisieren.

ich danke euch schon mal, für eure hilfe!
viva los tioz!


hier der code:
Delphi-Quellcode:
program Project1;

uses
  Forms, SysUtils,
  Unit1 in 'Unit1.pas' {Form1},
  Siegel1 in 'Siegel\Siegel1.pas' {Siegel},
  Splash1 in 'Splash\Splash1.pas' {Form23z};
{$R *.res}

begin
// Produktsiegel           (dieser Splash ist animiert)
 Application.Title := 'Produktsiegel';
 Siegel := TSiegel.Create(Application);
 Siegel.Show;
 Application.Initialize;
 Siegel.Update;
  Sleep(1500);
 Siegel.Hide;
// Splash Screen           (und der Bursche hier nicht) (also einfach nur ein Bild)
 Application.Title := 'Splash Screen';
 Form23z := TForm23z.Create(Application);
 Form23z.Show;
 Application.Initialize;
 Form23z.Update;
  Sleep(1500);
 Form23z.Hide;

// Hauptprogramm
 Application.CreateForm(TForm1, Form1);
  Siegel.Free; Form23z.Free;
 Application.Title := 'Fleissnerin'' with Fleissnerer';
 Application.Run;
end.


PAX

Der_Unwissende 6. Mär 2006 18:47

Re: animierter Splashscreen mit mehreren Timern für Animatio
 
Hi,
ich weiß nicht wirklich wie deine Animationen ablaufen, aber dir ist sicherlich klar, dass ein sleep den gesamten Prozess schlafen legt? Das heißt natürlich auch, dass Timer (die gehören imho zum Hauptthread) nie ein Ereignis auslösen können. Wenn du auf etwas bestimmtes warten willst, solltest du dafür lieber etwas wie Delay nehmen (gibt hier in der DP irgendwo eine hübsche Implementierung).

Die andere Sache ist, warum die Projektdatei editieren? Du kannst dir auch einfach ein eigenes Formular schaffen, dass für die Verwaltung zuständig ist. Dieses kann die beiden Splashscreens nacheinander öffnen und dann ein drittes, vierstes, x-tes Fenster. Kannst natürlich auch das normale Hauptformular solange unsichtbar machen, wie du andere Fenster anzeigst.

Gruß Der Unwissende

PAX 7. Mär 2006 17:51

Re: animierter Splashscreen mit mehreren Timern für Animatio
 
also lags am sleep? ich würde diese gesamte splashscreensache nur in die eigentliche applikation einbauen (oder noch ein extraformular), wenns garnicht mehr anders geht.
ich wollte nun eigentlich testen, ob es am sleep-befehl lag und habe die delayprozedur geschrieben (in der projektdatei) und sleep ersetzt. leider war ein test nicht möglich, da der compiler anscheinend, gettickcount angeblich noch nie gesehen hat (in der formular-unit kennt ers wieder). was isn nun los? fehlt die deklaration einer unit? welche?

:(

turboPASCAL 7. Mär 2006 19:41

Re: animierter Splashscreen mit mehreren Timern für Animatio
 
In der Uses-Klausel die Unit Windows mit aufnehmen.

Delphi-Quellcode:
program Project1;

uses
  Forms,
  Windows, // <---<<<
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  //...
  Application.Initialize;
  //...

PAX 7. Mär 2006 20:15

Re: animierter Splashscreen mit mehreren Timern für Animatio
 
dankeschön! :)

eine frage noch:

da ich im animierten splash timer benutze, kann es sein, dass auf älteren rechnern die zeiten nicht ganz stimmen und das delay bei ihnen zu kurz angesetzt ist? weil, während das delay läuft, spielen sich gerade auch die animationen ab. ich habe angst, dass es passieren kann, dass die zeiten mal, aus welchem grund auch immer (existiert einer?), nicht ganz passen könnten...

SirThornberry 7. Mär 2006 20:31

Re: animierter Splashscreen mit mehreren Timern für Animatio
 
das delay sorgt doch nur dafür das windowsbotschaften verarbeitet werden. Die Timerevents sollten also bei ordentlicher delay-implementierung auch überall gleich aufgerufen werden.

PAX 8. Mär 2006 05:24

Re: animierter Splashscreen mit mehreren Timern für Animatio
 
is praktisch also ohne bedenken einzusetzen in dieser form? denn, die zeit im delay is so angesetzt, dass zum einen die ganzen timer ablaufen können (starten zu unterschiedlichen zeiten, hören zu unterschiedlichen zeiten auf, laufen unterschiedlich lang) und zum anderen, nach dem alle timer fertig sind, der splash noch eine weile verharrt. ?

und was is dieses GetTickCount eigentlich? es startet ja nciht bei 0... wie generiert er seinen wert?


danke für eure hilfe!

dfried 8. Mär 2006 07:24

Re: animierter Splashscreen mit mehreren Timern für Animatio
 
Zitat:

Zitat von PAX
und was is dieses GetTickCount eigentlich? es startet ja nciht bei 0... wie generiert er seinen wert?

Tja, ein Blick in die (Windows-SDK-) Hilfe ist manchmal ganz aufschlussreich (die findest du normal auch in deinem Hilfe-Menu in Delphi), da steht dazu:

"The GetTickCount function retrieves the number of milliseconds that have elapsed since Windows was started."

PAX 9. Mär 2006 08:41

Re: animierter Splashscreen mit mehreren Timern für Animatio
 
wie weit weicht denn die timer-komponente ab? und wann tut sie das?

und noch was:
Zitat:

Achtung: Die maximale Anzahl der Zeitgeber ist systemabhängig.
kennt jemand genauere werte, wieviel wo möglicht sind?

PAX 9. Mär 2006 15:53

Re: animierter Splashscreen mit mehreren Timern für Animatio
 
kennt keiner eine antwort, oder mögt ihr mich einfach nicht, weil ich so dumm bin :-D ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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