![]() |
zweites Formular (vordefiniert) soll wenn nicht sichtbar keine DB-Verbindung haben
Hallo,
ich habe ein relativ große Programm in Delphi geschrieben und nun wurde ich gebeten einen Majormode hinzuzufügen (Auswahl-Bildschirm). Das Programm startet automatisch beim Einloggen. Dann taucht der Auswahlbildschirm auf, auf dem man quasi entweder das Porgramm an sich startet oder eben Administrative Sachen machen kann. Auch Log-file anschauen und eine Art Demo-Mode wurden implementiert. Ich hatte das so gedacht, dass über den majormode die anderen Fenster (Programm, Administration, Einstellungen usw) als modales Fenster zu starten. Das hat den Vorteil, dass immer nur ein Fenster aktiv ist und man nicht mehrere gleichzeitig starten kann. Wenn man man nun sagt, dass man das eigentliche Programm starten will. dann werdem bei create die nötigen DB-Verbindungen erstellt und auch eine Komponente um ein Relais anzusteuern. Nun dachte ich "hey, man kann das ja Starten, beenden, starten" so dass ich die Verbindungen bei Onshow verbinden lasse. Zum einem habe dann lernen müssen. dass ein Form.close nicht im Form.Onshow gemacht werden kann (meist Verbindung Ja dann Ok, ansonsten gib Meldung und schliesse). hat dazu irgendjemand eine Idee am Rande? Habe eine Lösung, welche mir pesönlich nicht gefällt. Das Problem ist nun, dass erst bei Form.Destroy die Komponenten frei gegeben werden. Wenn jetzt nach erfolgreichern Einsatz der Majormode aufgerufen wird und der Server über nacht dank backUp nicht mehr erreicht wird, dann kommen Verbindungsfehler .... die ganze Nacht. Wie kann ich das verhindern, bei Form.onclose sage ich immer trenne Verbindung zu DB und Relais .... leider ist es dem Programm egal ... Ok, ich hoffe, dass man mein Problem versteht, wenn nicht schreibe ich die fehlenden Informationen dazu. Ich will auch keinen Quellcode ... eventuell nur Tipps, was ich falsch mache, was ich vergessen haben könnte oder eventuell hat jemand eine coole Idee, welche passen könnte |
AW: zweites Formular (vordefiniert) soll wenn nicht sichtbar keine DB-Verbindung habe
Warum prüfst du nicht beim Klick auf den Button, ob eines der anderen Fenster geöffnet ist / angezeigt wird und verhinderst dann ggf. das öffnen des neuen Fensters?
Ganz stumpf (und nur vom PRINZIP):
Delphi-Quellcode:
if Form2.visible or
Form3.visible or //auch nicht sich selber versuchen nochmal zu öffnen Form4.visible then //für jede weitere Form ein weiteres "or" begin showmessage('Bitte erst das andere Fenster schließen.'); exit; end else begin Form3.visible := true; //hier dann die Datenverbindung herstellen end; //im onClose & onDestroy des jeweiligen Forms dann die Datenverbindung trennen |
AW: zweites Formular (vordefiniert) soll wenn nicht sichtbar keine DB-Verbindung habe
Moin...8-)
Delphi-Quellcode:
...viel mehr kann man nicht falsch machen. :wink:
Form2.visible = true
Besser: 1. Self statt Form2 2. Niemals auf "true" prüfen. :zwinker: |
AW: zweites Formular (vordefiniert) soll wenn nicht sichtbar keine DB-Verbindung habe
Zitat:
Delphi-Quellcode:
PreconditionVerified wäre eine andere class function, die prüft, ob notwendige Vorbedingungen erfüllt sind, z. B. eine Datenbankverbindung existiert. Zu versuchen, ein Form während des Vorgangs der Erzeugung wieder zu schließen, weil irgendwas fehlt, ist ein übler Anfängerfehler; man sollte immer vorher sicherstellen, dass das Form seine Aufgabe auch erfüllen kann.
function TProgramform.Execute: boolean;
var LForm: TProgramform; begin Result := false; if PreconditionsVerified then begin LForm := TProgramform.Create(nil); try Result := LForm.ShowModal = mrOK; finally LForm.Free; end; end; {if} end; |
AW: zweites Formular (vordefiniert) soll wenn nicht sichtbar keine DB-Verbindung habe
Zitat:
Wie soll man hier auf "self" prüfen, wenn man andere Forms abfragen möchten. Self ist doch nur für das aktuell aktive oder nicht? Das mit dem True habe ich nur für das Verständnis gemacht, damit er weiß was gemeint ist. Habe es aber mal abgeändert. |
AW: zweites Formular (vordefiniert) soll wenn nicht sichtbar keine DB-Verbindung habe
Moin...8-)
Zitat:
Zitat:
|
AW: zweites Formular (vordefiniert) soll wenn nicht sichtbar keine DB-Verbindung habe
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 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