[Gelöst] Splashscreenanzeige zu kurz

Für Fragen von Einsteigern und Programmieranfängern...
and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von and4more »

...ups, habe grade festgestellt, dass man den SplashScreen doch nicht vor die MainForm setzen sollte, da sonst mit dem Schließen des SplasScreens sich auch die MainForm beendet, warum auch immer?!?
Und seltsamerweise wird das .png-Bild bei mir nicht transparent, sondern mit weißem Hintergrund dargestellt.
Und der Timer scheint keinen Effekt auf die Anzeigedauer zu haben.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

TBug
Beiträge: 179
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von TBug »

and4more hat geschrieben:...ups, habe grade festgestellt, dass man den SplashScreen doch nicht vor die MainForm setzen sollte, da sonst mit dem Schließen des SplasScreens sich auch die MainForm beendet, warum auch immer?!?
Dies hast Du bestimmt in den Projekt-Einstellungen gemacht. Die Apllication.MainForm ist dann nicht mehr Deine MainForm, sondern eben die Form, welche in den Projekt-Einstellungen ganz oben steht. Und daher wird die Anwendung beendet, wenn der SplashScreen freigegeben wird, weil dieser eben nun die MainForm ist.

Umgehen kannst Du dies, wenn Du es so machst, wie ich es in meiner Lösung dargestellt habe und eben den SplashScreen in der lpr-Datei selbst erzeugst aber unter keinen Umständen mit Application.Create().


.

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von and4more »

@TBug
...danke hat gut geklappt. Mir ist allerdings komplett unklar warum das PNG-Bild von Michl transparent dargestellt wird und meins nicht. Am Bild kann's nicht liegen, denn wenn ich sein Bild in meine Applikation lade ist es auch nicht transparent. Und seltsamerweise wenn ich meine Bilder in sein TImage lade fehlt der später von mir hinzugefügte Text, aber das Originalbild wird transparent angezeigt, so dass es sich hier um eine Mischung zwischen Problemen mit dem Bildformat und Darstellung durch Lazarus handeln müsste. Die Einstellungen im Designer wurden von mir 1 zu 1 exakt übernommen.
Zuletzt geändert von and4more am Sa 3. Okt 2015, 13:26, insgesamt 1-mal geändert.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von and4more »

...Timer-Problem konnte ich zwischenzeitlich lösen. Wenn man bei OnStartTimer: FormShow einträgt dann klappen auch die Zeitvorgaben.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von Michl »

TBug hat geschrieben: aber unter keinen Umständen mit Application.Create()
Warum? Das geht schon siehe Bsp. Einziger Nachteil wäre, dass das Formular erst wieder frei gegeben wird, wenn das Programm geschlossen wird.
and4more hat geschrieben:Mir ist allerdings komplett unklar warum das PNG-Bild von Michl transparent dargestellt wird und meins nicht.
K.A. Ich habe eben noch das Programm in Lazarus 1.4.0 gestartet - geht auch (das Test-PNG habe ich mit Gimp erstellt, einfach transparenten Hintergrund gewählt, etwas Schrift darauf, schön bunt gefärbt :mrgreen: und als PNG exportiert).
Das sieht dann bei mir so aus:

Bild

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von and4more »

...verstehe ich nicht, habe mein Bild auch in GIMP erstellt mit transparentem Hintergrund und in Photoshop auch nochmal geprüft. Das Bild ist o.K. Es erklärt aber auch nicht das unterschiedliche Verhalten beim Laden in beiden Programmen (s. o.). Vielleicht kannst Du das Beispielprogramm anhängen, dann kann ich's bei mir mal testen.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von Michl »

Jetzt hatte ich das PNG schon gelöscht :?

Habe ein neues erstellt, das Projekt ist das gleiche, wie das schon mal zuvor gepostete.

Was geht denn eigentlich mit dem Timer nicht? Bei mir funktioniert das problemlos.

Das Projekt (nun mit Laz. 1.4.0 erstellt) nochmals anbei.

Offtopic:
Gimp:
- Datei -> Neu -> "Ein neues Bild erstellen" wird geöffnet
- Größe definieren, unter Erweiterte Einstellungen -> Füllung -> Transparenz wählen und mit OK bestätigen
- etwas auf dem neu erstellten Bild zeichnen
- Datei -> Exportieren ... oder Exportieren nach wählen -> Zielnamen und als Endung ".png" wählen und auf "Exportieren" klicken
- im Formular "Bild exportieren als PNG" alle Einstellungen beibehalten und auf Exportieren klicken

und schon ist das PNG erstellt, was man in Lazarus -> FrmSplash -> Objektinspektor -> Image1 -> Eigenschaft Picture laden kann
Dateianhänge
SplashScreenNochmal.zip
(54.59 KiB) 92-mal heruntergeladen

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von and4more »

...danke für den Anhang. Also das ist ganz seltsam, lade ich mein Bild in Dein Programm funktioniert's wie gewünscht perfekt, bei mir ist immer der Hintergrund weiß. Kann ich echt nicht verstehen. Hast Du irgendwelche Erweiterungen drin oder liegt's an Lazarus? Ich habe 1.4.2.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von Michl »

Da ich noch nicht hellsehen kann, musst du wohl auf die Suche nach dem Unterschied gehen (du hast ja beide Projekte vorliegen). Ich würde einfach beide .lfm beider Formulare in jeweils separate Textbetrachter öffnen, die Fenster nebeneinander legen und vergleichen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von and4more »

...habe ich schon gemacht und keinen Unterschied gesehen. Habe aber jetzt Dein SplashForm in mein Projekt geladen und es funktioniert, also muss es irgendwo daran liegen. Werde mal die diffs beider Dateien durchschauen.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von and4more »

...auch nach Durchsicht der Diff's sind keine nennenswerten Unterschiede feststellbar. Sehr seltsam, aber wenigstens klappt's jetzt.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

TBug
Beiträge: 179
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von TBug »

Michl hat geschrieben:
TBug hat geschrieben: aber unter keinen Umständen mit Application.Create()
Warum? Das geht schon siehe Bsp. Einziger Nachteil wäre, dass das Formular erst wieder frei gegeben wird, wenn das Programm geschlossen wird.
Der Nachteil wäre genau der, den der TE ja vermeiden wollte.
Nämlich:
and4more hat geschrieben:...ups, habe grade festgestellt, dass man den SplashScreen doch nicht vor die MainForm setzen sollte, da sonst mit dem Schließen des SplasScreens sich auch die MainForm beendet, warum auch immer?!?
Wenn Du den SplashScreen nun wieder mit Application.Create() erstellen würdest, dann wäre der SplashScreen wieder das Hauptformular da es zuerst erstellt wird und die Anwendung würde geschlossen werden, wenn der SplashScreen freigegeben wird.
Und noch dazu, dass die Anwendung nicht beendet würde, wenn das vermeintliche Hauptfenster geschlossen wird, da es ja nicht das Hauptfenster wäre.


.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von Michl »

@TBug: Jetzt ist der Groschen gefallen. Der Vorteil ist, dass der Splashscreen sofort angezeigt wird, bevor irgend etwas anderes erstellt wird. Das ist tatsächlich von Vorteil. Danke!
and4more hat geschrieben:auch nach Durchsicht der Diff's sind keine nennenswerten Unterschiede feststellbar.
Ich tippe mal auf ... Magie :)

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

TBug
Beiträge: 179
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: [Gelöst] Splashscreenanzeige zu kurz

Beitrag von TBug »

Michl hat geschrieben:Der Vorteil ist, dass der Splashscreen sofort angezeigt wird, bevor irgend etwas anderes erstellt wird. Das ist tatsächlich von Vorteil.
Dadurch kannst Du auch eine Fortschrittsanzeige in den SplashScreen implementieren und zum Beispiel ein Memo, in welchem angezeigt wird, welches Element gerade erstellt wird, oder wenn eine Dantenbankverbindung erzeugt wird, damit der Benutzer wärend des Programmstarts auch sieht, dass etwas passiert.

Schließen kann man dann den SplashScreen zum Beispiel im OnShow-Event der MainForm, wenn die MainForm zum Ersten mal angezeigt wird.


.

Antworten