![]() |
Eure Meinung zu einem Loader, was muss er haben?
Hallo an euch alle und einen guten Start in die neue Woche.
Habe mal eine Frage an euch, zu eurer Meinung von einem Loader. Also am Freitag wurde mir bei einem Problem hier geholfen, was leider eine große Umstellung in meinem Programm führt, die aber für die Funktionalität von nöten ist. Bisher: Habe ich eine Hauptform, die eine rein unterstützende Funktion hat und eigentlich meine Arbeit überwachen sollte. Sie dient als Loader und Protokolform (beschreibt Tmp-Datei mit einigen Informationen, die den Ablauf des Programms betreffen) Diese Form erzeugt einen Arbeitshreat, der zuerst alle Perepherie-Geräte (die durch das Programm gesteuert werden) initialisiert und dabei feststellt, welches ist wirklich angeschlossen und einsatzbereit. Wenn dies geschehen ist, wird die Bedien-Form geladen. Wie wird umgestellt: Es hat sich gezeigt, dass ich für meine weitere Arbeit die Bedienform zur Hauptform umbauen muss. Jetzt stehe ich eigentlich vor einer ziemlich schwierigen Frage: Wie baue ich sinnvoll meine Loaderform um? Ich denke in der heutigen Zeit ist sowas schon von Nöten, da das initialisieren der Perepherie-Geräte eine ganze Weile benötigt. Aber leider verliert diese bisher in meiner Vorstellung die komplette Existenzberechtigung. Möchte hier einmal eure Meinung hören, was in einen Loader gehört? Ist es wirklich nur eine rein visuelle Kopmonete oder legt ihr dort bestimmte Funktionalitäten rein? Vielen Dank BAMatze |
Re: Eure Meinung zu einem Loader, was muss er haben?
Such mal nach Splash
|
Re: Eure Meinung zu einem Loader, was muss er haben?
cool hab das Tut gefunden hier in DP, dank dir.
|
Re: Eure Meinung zu einem Loader, was muss er haben?
Liste der Anhänge anzeigen (Anzahl: 1)
Ok hab mir jetzt mal das Tut angeschaut und abgearbeitet. Komischer Weise scheint mir das Programm nicht wirklich das zu liefern, was ich eigentlich kommen sollte. Denke mal hab einen kleinen Fehler drin, den ich mir aber noch nicht erklären kann.
Also folgendes möchte ich gern erreichen: Die SplashForm soll gezeigt werden, bis das Hauptprogramm geladen ist, dann schließt es sich. (Folgende Sachen sind erstmal nebensächlich: Sichtbarkeit der Hauptform, Hauptform disabled beim laden, ...) Was ist der derzeitige Stand: Die SplashForm terminiert sich nicht, sondern bleibt im Hintergrund. Ich weiß ich kann sie auch einfach in der MainForm schließen, die Frage ist nur, ob das so wirklich gedacht ist? Denn im Tut steht, dass sie die Splashform eigentlich selber terminieren soll. Weiterhin kann die Splash Form nicht über das "X" geschlossen werden. Eine 2. kleine Frage: in der Projekt-Datei des Tut-Erstellers stehen folgende Zeilen:
Delphi-Quellcode:
Mich irritiert etwas, dass meine Projekt-Datei so aussieht:
begin
Application.Initialize; Application.CreateForm(TfrmMain, frmMain); Application.CreateForm(TfrmSplash, frmSplash); Application.Run; end.
Delphi-Quellcode:
Wo kommt diese Zeile her? Hab auch schon bemerkt, dass ich bei der Free-RAD-Version 2006 zu Hause und der RAD2007 Vollversion ein Problem genau an der Stelle auftritt. (Muss diese Zeile dann auskommentieren, dann laufen die Programme zu Hause).
Application.Initialize;
Application.MainFormOnTaskbar := True; // <--- zusätzliche Zeile Application.CreateForm(TForm1, MainForm); Application.CreateForm(TForm2, SplashForm); Application.Run; Hier mein Dateien, damit ihr das Problem mal anschauen könnt. |
Re: Eure Meinung zu einem Loader, was muss er haben?
Die Eigenschaft MainFormOnTaskbar ist wohl eine neue Eigenschaft von TApplication in den neueren Delphi Versionen.
|
Re: Eure Meinung zu einem Loader, was muss er haben?
Hallo BAMatze :-)
Also ich denke, wenn du im kleinen dieses Tut nachbaust, wird es funktionieren. Vielleicht hilft dir das weiter: Wenn du dafür sorgst, dass alle Vorgänge des Loaders abgeschlossen sind bevor in der DPR das Application.Run kommt sollte das schon viele Probleme lösen. Es bleibt die Frage wie man das macht. In deinem Fall würde ich vorschlagen, dass du nachdem du das SplashForm erzeugt hast du es anzeigst und Updatest und dann dort eine Methode aufrufst die den ganzen Ladevorgang abarbeitet. Wenn die Methode fertig ist, dann sollte das Run kommen. Das sieht dann ungefähr so aus:
Delphi-Quellcode:
zur zweiten Frage:
Application.Initialize;
Application.MainFormOnTaskbar := True; // <--- zusätzliche Zeile Application.CreateForm(TForm1, MainForm); Application.CreateForm(TForm2, SplashForm); SplashForm.Show; SplashForm.Update; SplashForm.LoadAll; // <-- Diese Methode must du Implementieren und mit dem füllen was beim laden alles passieren soll. // jetzt brauchen wir den Spash-Screen nicht mehr -> Schliessen und aufräumen SplashForm.Close; SplashForm.Free; Application.Run; Diese Zeile sorgt dafür, dass ab Vista dein MainForm nicht nur als Symbol erscheint sondern wenn du drüber fährst auch in dem Kleinen Vorschaufenster des MainForm angezeigt wird. Diese Funktionalität gibt es erst seit Delphi 2007 somit können das die Turbos (die auf Delphi 2006 aufbauen) nicht. Per Compilerschalter der die Version abfragt kannst du dafür sorgen, dass du die Zeile drinne lassen kannst und in beiden Umgebungen den selben Quelltext behalten kannst. Du kannst es im Prinzip selber machen mit der Liste der Versionen für die Compiler. Delphi 1 = VER80 .... Delphi2007 = VER190 .... Die jedi.inc löst genau alle diese Versionen auf in "schön" lesbare Namen z.B. hier zu finden ![]() Dadurch sieht Dein Projekt dann so aus:
Delphi-Quellcode:
Du brauchst nicht die ganze JCL auf beiden Rechnern. Eigentlich nur die jedi.inc in Deinem Projektverzeichnis. Aber ich weiße noch auf die Lizenzbedingungen hin. Diese sollte man ja vor allem bei Kommerziellen Projekten vorher immer prüfen :-)
{$I jedi.inc} // sorgt dafür, dass die Datei verwendet wird
{$IFDEF DELPHI2007_UP} Application.MainFormOnTaskbar := True; // <--- zusätzliche Zeile nur für Delphi 2007 und höher {$ENDIF} Gruß, Chris |
Re: Eure Meinung zu einem Loader, was muss er haben?
Ich würde das Formular noch selbst erstellen:
Delphi-Quellcode:
Application.Initialize;
SplashForm:=TForm2.Create(Application); SplashForm.Show; SplashForm.Update; ..... InitIrgendwas;.... Application.MainFormOnTaskbar := True; // <--- zusätzliche Zeile Application.CreateForm(TForm1, MainForm); SplashForm.Close; SplashForm.Free; Application.Run; |
Re: Eure Meinung zu einem Loader, was muss er haben?
Dank euch wiedermal, hab
![]() Dank euch |
Re: Eure Meinung zu einem Loader, was muss er haben?
Zitat:
Viel Erfolg beim ausprobieren. Das wird schon :cheer: Gruß, Chris |
Re: Eure Meinung zu einem Loader, was muss er haben?
Ich frag hier jetzt einfach nochmal, weiß nicht, ob ich dafür noch einen seperaten Threat machen muss. Wenn ja sagt es mir kurz und ich erstelle ihn.
Ich lasse meinen Splash jetzt erstellen und setze die Transparenz auf 180 von 255. D.h. der Loader ist noch leicht transparent aber sichtbar. Würde jetzt aber gerne die Transparenz der Schrift auf 255 setzen. Ist dies in meiner LoaderForm möglich? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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 by Thomas Breitkreuz