![]() |
Programm abhängig von Runtimeparameter unsichtbar starten
Hallo,
ich habe ein größeres VCL-Programm, welches ich im Falle des Starts mit einem bestimmten Runtime-Parameter unsichtbar starten möchte, einige Funktionen von der Main Form ausführen möchte und dann wieder beenden möchte. Sehe ich das richtig, dass ich in der Main.dpr den Runstring vor Application.Run abfragen und dann ggf. Application.ShowMainForm := False; setzen muss? Wo muss dann mein weiterer Code für den unsichtbaren Fall stehen? Muss im unsichtbaren Fall Application.Run überhaupt aufgerufen werden? Gruss Iphi |
AW: Programm abhängig von Runtimeparameter unsichtbar starten
Application.Run fürh die Nachrichtenschleife aus,
also wenn du diese brauchst, dann sollte man das nicht entfernen. PS: Wenn ich ein Fenster garnicht anzeigen will, dann laß ich es erst garnicht erstellen. Im Grunde kommt es aber drauf an, was und wie du es nun ausführen willst, wenn keine GUI angezeigt wird. Wenn das klar ist, dann kann man erst entscheiden was man machen muß/kann, um dieses zu erreichen. |
AW: Programm abhängig von Runtimeparameter unsichtbar starten
Im Prinzip will ich alle Funktionen der GUI benutzen, nur das Fenster nicht anzeigen.
Ich möchte also das, was normalerweise sichtbar abläuft (Datenerfassung mit grafischer Darstellung und am Ende Ausgabe in Datei) unsichtbar ablaufen lassen. Wie strukturiere ich das? |
AW: Programm abhängig von Runtimeparameter unsichtbar starten
Hast du Oberfläche und Programmlogic voneinander getrennt? Wenn dem so ist kannst du die Oberflächenerzeugung weg lassen und nur die Programmlogic ausführen.
|
AW: Programm abhängig von Runtimeparameter unsichtbar starten
Zitat:
Wo baue ich dann meine Programmlogik ein? |
AW: Programm abhängig von Runtimeparameter unsichtbar starten
Hi,
ShowMainForm := False oder Visible := False sind dann wohl fast deine einzigen Möglichkeiten. Solange keine Interaktion vom Benutzer nötig ist (beachte auch Fehlerfälle, wenn zum Beispiel falsche Daten vorliegen, eine Datei nicht existiert, etc. - dann sollte *keine* MessageBox kommen), sollte das auch hinhauen. Trennen könnte man es zum Beispiel, in dem man eine Klasse TAnalyzer baut, die als Methode zum Beispiel AnalyzeStart() hat. Das Form würde eine Instanz dieser Klasse erzeugen und die Datenverarbeitung mit AnalyzeStart() anhauen. Weil du ja Daten noch grafisch darstellen möchtest, hätte die Klasse TAnalyzer einen oder mehrer Events, an die sich das Form verbindet. Über die Events gibt die Klasse TAnalyzer, die die Daten hält und verarbeitet, dann Infos an das Fenster weiter, so dass da zum Beispiel eine Kurve oder sonstwas mit Hilfe der Daten aus dem Event gemalt werden kann. Und wenn du jetzt eine Version bauen wolltest, die kein Fenster mehr hat, erstellst du einfach eine Instanz dieser Klasse (Code in der .dpr-Datei, wo auch das Application.* alles steht) und rufst dann AnalyzeStart() auf - das Fenster ist dann nicht mehr nötig und die Logik ist von der Oberfläche schön getrennt. So ist es dann auch ganz einfach möglich, nebenbei noch ein Konsolenprogramm oder einen Dienst anzubieten. Alle 3 Programme würden dann genau das selbe machen, weil die Logik dank TAnalyze überall die gleiche ist. Seitdem ich mir diese Vorgehensweise angewöhnt habe, ist mein Leben schöner geworden. Hört sich doof an, ist aber so :P Liebe Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 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