Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   [XE4] Themes, Splashscreen (https://www.delphipraxis.net/187410-%5Bxe4%5D-themes-splashscreen.html)

4dk2 27. Nov 2015 08:39

[XE4] Themes, Splashscreen
 
Hallo zusammen,
hab eine Anwendung von uns von D7 nach XE4 portiert (das ging unter einer Stunde),
Und wollte nun die VCL Styles nutzen, jedoch ist das erste laden der Oberfläche dann "sau" langsam, bei aktivierten Themes.
Das passiert nur einmal wäre auch nicht schlimm, jedoch kann man sehen wie er jedes einzelene Element zeichnet.

Da würde ich gerne nen splashscreen einblenden, und das Formular solange verstecken.
Schonmal jemand gemacht?

Perlsau 27. Nov 2015 08:44

AW: [XE4] Themes, Splashscreen
 
Zitat:

Zitat von 4dk2 (Beitrag 1322659)
Da würde ich gerne nen splashscreen einblenden, und das Formular solange verstecken. Schonmal jemand gemacht?

Ja, hier, ich, sogar schon öfters. Was ist dein Problem dabei?

4dk2 27. Nov 2015 11:23

AW: [XE4] Themes, Splashscreen
 
Hey Perlsau,
ich hab noch nen bisl getestet, und da alle Komponenten auf einem Panel sind, bzw das als backgroundpanel dient, hab ich folgendes gemacht:

Delphi-Quellcode:
//im create
..
pbBack.visible := false;
..

//bei nem button dann:
pbBack.visible := true;
//und die zeit gemessen. 3,5 sekunden braucht des !
//beim nem erzwungen repaint danach, braucht er nur noch 600 ms
Kann ich irgendwie bei dem unsichtbaren panel/komponente einen repaint erzwingen, obwohl es nicht sichtbar ist? repaint update usw hab ich schon durch, das erste Visible= true dauert trotzdem so lange, und man sieht wie er die elemente zeichnet. (denke das repaint visible oder ähnliches abfragt)

Perlsau 27. Nov 2015 11:40

AW: [XE4] Themes, Splashscreen
 
Du fragtest doch nach einem Splash-Sreen, nicht wahr? Das, was du da machst, ist kein Splash-Screen. Ein Splash-Screen ist ein Formular mit einem ansprechenden Äußeren, auf dem z.B. zu lesen steht: "Bitte warten ... Ihre Anwendung wird initialisiert ..." oder irgendwas derartiges. Dieses Formular rufst du als erstes in der Projekt-Quelldatei auf. Ich verwende die Splash-Screens meist auch gleichzeitig als Info-Screen, deshalb gebe ich sie nicht frei, nachdem das Programm vollständig initialisiert wurde. Ansonsten kannst du dieses Splash-Formular auch gleich nach dem Durchlauf von OnShow deines Hauptformulars freigeben. Zudem findest du hier, wenn du mal die Forensuche bemühst, zahlreiche Diskussionen zum Thema.

Delphi-Quellcode:
program Project1;

uses
...
begin
  FormSplash := TFormSplash.Create(Application);
  FormSplash.Show;
  FormSplash.Update;
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.Title := 'Soundso-Anwendung vS.x by PC-Heil';
  Application.CreateForm(TFormMain, FormMain);
...
end.

UNIT UnitMain;
...
Procedure TFormMain.FormShow(Sender: TObject);
begin
  ...
  FormSplash.Hide; // wenn du's noch als Info-Screen benötigst oder:
  FormSplash.Free; // ganz rausschmeißen
end;
...
end.

4dk2 28. Nov 2015 06:09

AW: [XE4] Themes, Splashscreen
 
Naja es hat aber ja mit splashscreen zu tun, weil solange er nicht fertig ist mit allem würd ichs anzeigen :-D. wie ein splash form usw funktioniert weiss ich und ist nicht das problem.

Mein muss doch möglich sein das ding zeichnen zu lassen ohne das es sichtbar ist oder ? (Also das es denkt es wäre sichtbar)
ich glaub ich guck mal in die Winapi...

Perlsau 28. Nov 2015 07:06

AW: [XE4] Themes, Splashscreen
 
Guten Morgen

Zitat:

Zitat von 4dk2 (Beitrag 1322755)
Naja es hat aber ja mit splashscreen zu tun, weil solange er nicht fertig ist mit allem würd ichs anzeigen :-D. wie ein splash form usw funktioniert weiss ich und ist nicht das problem.

Nicht wirklich :cyclops:

Zitat:

Zitat von 4dk2 (Beitrag 1322755)
Mein muss doch möglich sein das ding zeichnen zu lassen ohne das es sichtbar ist oder ? (Also das es denkt es wäre sichtbar)
ich glaub ich guck mal in die Winapi...

Du möchtest also auf einem Panel, das auf deinem Haupt-Formular liegt, was zeichnen, um das verzögerte Zeichnen auf eben diesem Formular zu verbergen? Klingt irgendwie seltsam, findest du nicht? Jetzt stell es dir doch mal bildlich-chronologisch vor:

In deinem Mainformular hast du gewisse Aktionen beim OnCreate, OnActivate und/oder OnShow am Laufen. Diese Aktionen bewirken, daß das Formular nur sehr zögerlich gezeichnet wird. Das möchtest du nun gerne verbergen. Verständlich. Ergo erzeugst du vor dem Mainformular ein anderes, nämlich dein Splashformular, das diese Aktionen nicht beinhaltet und daher noch vor dem Mainformular flott gezeichnet wird. Erst danach erzeugst du dein Mainformular, und zwar verdeckt durch das Splashformular. Alles andere macht in meinen Augen absolut keinen Sinn. Und sinnvoll sollte das, was du programmierst, doch wohl sein, zumindest ein wenig, oder ...? :roll:

Soweit alles gut rübergekommen?

4dk2 28. Nov 2015 07:17

AW: [XE4] Themes, Splashscreen
 
Ja so ungefähr XD



1. Splash Form Create/show
2. Normale Forms Create
3. Main Form Show
4. Panel visible = true
5. Main form erst jetzt sichtbar
6. Splashform hide.


Klar man kann einfach das Splashform drüber legen, aber das halte ich dann wiederum für nicht sinnvoll bzw. ne krücke.
Und da mein Mainform maximiert ist, wär das splashform dann auch auf dem ganzen screen XD.

Perlsau 28. Nov 2015 07:26

AW: [XE4] Themes, Splashscreen
 
Zitat:

Zitat von 4dk2 (Beitrag 1322757)
Klar man kann einfach das Splashform drüber legen, aber das halte ich dann wiederum für nicht sinnvoll bzw. ne krücke.

Wieso Krücke? Das ist die Art & Weise, wie Splashscreens gewöhnlich realisiert werden.

Zitat:

Zitat von 4dk2 (Beitrag 1322757)
Und da mein Mainform maximiert ist, wär das splashform dann auch auf dem ganzen screen XD.

Du hast es offenbar noch immer nicht verstanden: Wenn es möglich wäre, das Zeichnen der Mainform flott zu organisieren, so daß die Aktionen in den Startmethoden keine Verzögerungen bewirken, bräuchtest du doch gar keinen Splash-Screen, um dieses verzögerte Zeichnen zu verbergern. Kannst du mir soweit folgen? Und weil das eben nicht möglich ist, setzt man zu diesem Zweck ein extra Formular ein. Natürlich kannst du weiterhin versuchen, das Zeichnen der Mainform doch noch zu beschleunigen, ich wünsche dir viel Spaß dabei und klinke mich jetzt hier aus.

4dk2 28. Nov 2015 07:52

AW: [XE4] Themes, Splashscreen
 
Zitat:

Zitat von Perlsau (Beitrag 1322758)
...um dieses verzögerte Zeichnen zu verbergern. Kannst du mir soweit folgen? Und weil das eben nicht möglich ist, setzt man zu diesem Zweck ein extra Formular ein. Natürlich kannst du weiterhin versuchen, das Zeichnen der Mainform doch noch zu beschleunigen, ich wünsche dir viel Spaß dabei und klinke mich jetzt hier aus.

"Und weil das eben nicht möglich ist.."???
Naja ich denke schon das es möglich ist. (guck dir z.b. mal MediaMonkey an, auch ne delphi Anwendnung die viel zu zeichnen ht, und ohne großartige analyse denk ich das dort kein form hinter dem splashscreen ist)

Falls doch gibt mir einen Beweis dafür, warum es unter windoof nicht möglich ist. Aber es einfach so zu behaupten ohne begründung...naja

Ich will es ja nicht beschleunigen, weils wahrscheinlich eh nicht geht, da es an den XE Themes liegt!
Und man wenn dort im code ansetzen müsste.


Zitat:

Zitat von Perlsau (Beitrag 1322758)
...ich wünsche dir viel Spaß dabei und klinke mich jetzt hier aus.

joar dann viel spass beim klinken :thumb:

Bernhard Geyer 28. Nov 2015 08:12

AW: [XE4] Themes, Splashscreen
 
Also meinen Tests mit (eingebauten) Themes haben keine größeren Probleme gezeigt. Bei den (noch verwendenten) Themes vom ElPack habe ich die Erfahrung das die aktivierung von Doublebuffer sich teilweise sehr positiv auf die Zeichengeschwindigkeit und das reduzieren von Flackern auswirkt.
Probier doch auch mal bei dir das Doublebuffer auf die Elemente deines Hauptformulares anzuwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:38 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz