![]() |
[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? |
AW: [XE4] Themes, Splashscreen
Zitat:
|
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:
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)
//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 |
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. |
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... |
AW: [XE4] Themes, Splashscreen
Guten Morgen
Zitat:
Zitat:
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? |
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. |
AW: [XE4] Themes, Splashscreen
Zitat:
Zitat:
|
AW: [XE4] Themes, Splashscreen
Zitat:
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:
|
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 01:22 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