Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbanken während der Designzeit alle schließen/öffnen (https://www.delphipraxis.net/212256-datenbanken-waehrend-der-designzeit-alle-schliessen-oeffnen.html)

MarcRB75 13. Jan 2023 11:24

Datenbank: ABS • Version: 7.93 • Zugriff über: -

Datenbanken während der Designzeit alle schließen/öffnen
 
Hallo,

ich habe mal eine generelle Frage:
kann oder könnte man in der Designzeit - z.B. durch eine eigene Komponente - alle Datenbanken und Tabellen schließen?
Also z.B. bei der eigenen Komponente durch eine Property mit True/False?

Oder ist so eine automatische Schließung/Öffnung NUR während der Laufzeit möglich, was ja einfach ist.

Vorab vielen Dank für Eure Hilfe/Antworten.

TurboMagic 13. Jan 2023 17:36

AW: Datenbanken während der Designzeit alle schließen/öffnen
 
Was hast du da für ein Szenario, dass du das tun willst?
Eine VCL Anwendung mit einer DBConnection und Datensteuerelementen, die dann gleich im
Designer Daten anzeigen?

Sobald die DB-Connection zu ist, ist auch der Rest der über diese läuft getrennt.
Da ich dein Szenario nicht kenne gehe ich davon aus, dass dir bekannt ist, dass man
die entsprechende Eigenschaft zur Verbindung auf false stellen kann und dann beim
Programmstart auf true...

TigerLilly 14. Jan 2023 09:52

AW: Datenbanken während der Designzeit alle schließen/öffnen
 
Es gibt von den GExperts und CNPack die Möglichkeit, vor dem Compilieren, Properties setzen zu lassen - zB Connected=False.

himitsu 14. Jan 2023 11:11

AW: Datenbanken während der Designzeit alle schließen/öffnen
 
Komponente ableiten und das Active/Connected-Property auf "stored False". :roll:

Das geht auch bei anderen Komponenten.
z.B. TPageControl
ein neues Properte "StartupPage" (die Seite, welche zu Laufzeit immer sichtbar sein soll) und wenn Jenes gesetzt ist, dann beim Anderen das Stored auf False,
und schon kann man im Designer rumwurschtelt und das Programm sieht dennoch immer gleich aus.

MarcRB75 14. Jan 2023 11:36

AW: Datenbanken während der Designzeit alle schließen/öffnen
 
Also mein Vorhaben ist eigentlich ganz einfach.
Ich habe 10 Datenbanken und während der Entwicklung kommen immer wieder neue Felder in den Tabelle hinzu oder weg.
Die Struktur der Tabellen verändert sich immer noch, während der Entwicklungsphase.
Und jedesmal muss ich dann wieder alle Datenbanken mit den Tabellen auf connected "false" setzen und nach der Änderung innerhalb der Tabellen muss ich danach wieder die Datenbanken auf connected true und die Tabellen wieder auf active true setzen.

Und dieses egwige hin- und her wollte ich mir erspraren, indem ich eine Komponente schaffe, die während meiner Entwicklung, im Designstatus, dieses An- und Ausschalten übernimmt.
Natürlich kann man das manuell machen.
Keine Frage, aber ich hätte das gerne, wenn man das durch eine eigene, abgeleitete Komponente, die ein Zusatz-Property hat (z.B. DBEinschAusschalten hat) automatisiert.

himitsu 14. Jan 2023 11:46

AW: Datenbanken während der Designzeit alle schließen/öffnen
 
Beim Erstellen von Komponenten, durch den DFM-Loader, kannst erkennen, wo du bist. (FormDesigner oder im laufenden Programm)

Im Create noch nicht an dir selber, aber im Owner.
Sonst, z.B. im Setter eines Property (wenn dieses Property in der DFM gespeichert wurde) oder im Loaded, am Ende des Ladens aller Komponenten-Property, lässt sich der ComponentState auf csDesigning prüfen.



Dann kann man auch Funktionen (Menuitem im Kontextmenü der Komponente oder als Link, Links unterm Property-Editor) ausführen lassen.

Bei Google suchenDelphi Component Editor

MarcRB75 14. Jan 2023 12:09

AW: Datenbanken während der Designzeit alle schließen/öffnen
 
Vielen Dank für Deine Antwort.
So gaaanz ist mir das jetzt nicht klar, wie man während der Designzeit Datenmodule und Formulare in einer Schleife
durchlaufen kann, dann prüft ob Datenbanken+Tabellen vorhanden sind, falls ja dann die Datenbanken+Tabellen ein/ausschalten.
mmmhh... mal ehrlich, geht das überhaupt? Also ich weiß leider nicht, wie ich da ansetzen muss?

TurboMagic 14. Jan 2023 15:43

AW: Datenbanken während der Designzeit alle schließen/öffnen
 
Der Code einer Komponente wird ja auch im Designer ausgeführt, z.B. bei visuellen der der Zeichenroutinen.
Damit kann man sich eigene Komponenten schrieben die tun was man will. Bei den Datensteuerelementen der
VCL werden ja auch ABfragen durchgeführt, wärend diese im Designer "aktiv" sind.

Uwe Raabe 14. Jan 2023 16:20

AW: Datenbanken während der Designzeit alle schließen/öffnen
 
Man könnte in der Tat eine Komponente entwickeln die das ermöglicht. Allerdings ist das nicht so ganz trivial. Zum einen muss man beim Iterieren der Datenmodule, Forms und Frames darauf achten, dass man nur die des eigenen Projekts bzw. der Projektgruppe verarbeitet und nicht noch die der Delphi IDE selbst (Man sollte den Mechanismus also mindestens auf eine oder mehrere dedizierte Verbindungen beschränken.), zum anderen kann man zwar alle (übrigen) Datenverbindungen aus- und hinterher wieder einschalten, aber vielleicht will man das ja auch gar nicht - z.B. die nicht, die vorher auch nicht aktiv waren. Dann gibt es noch die Fälle, bei denen nach dem Ausschalten z.B. ein Datenmodul geöffnet wird bei dem die Verbindungen offen sind. Oder man speichert und schließt ein Datenmodul während die Verbindung aus ist, will aber beim nächsten Öffnen dass sie aktiv ist. Und das sind auch nur die Fälle, die mir spontan dazu einfallen.

Delphi.Narium 14. Jan 2023 16:38

AW: Datenbanken während der Designzeit alle schließen/öffnen
 
Oder einen IDE-Experten schreiben, der sich "nur" das aktuelle Projekt nimmt und dort in allen Formularen, Datenmodulen, ... nach Datenbankkomponenten sucht und die z. B. vor dem Kompilieren schließt und nach dem Kompilieren öffnet.

Machbar müsste auch das sein, einen Aufwandsschätzung würd' ich mir hierzu aber nicht zutrauen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 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