Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Woher kommt globale Variable für Datenmodule (https://www.delphipraxis.net/172481-woher-kommt-globale-variable-fuer-datenmodule.html)

Furtbichler 7. Jan 2013 07:36

AW: Woher kommt globale Variable für Datenmodule
 
Keine Bange: Entweder sind die Verknüpfungen zur Laufzeit alle weg (Datasource im Datenmodul), oder es wird nichts angezeigt (Datasource woanders)

Ich mache das häufiger (bzw. habe es früher gemacht):
Ein Formular, das Daten anzeigen soll, verwaltet seine eignene Datenmodulinstanz.
Alle datensensitiven Steuerelemente sind mit der auf dem Formular plazierten TDataSource-Instanz verknüpft.
So geht auch nichts verloren, wenn mal wieder im Designer das Formular aber nicht das Datenmodul geladen ist.

Ich habe eine Eigenschaft 'DMKunde : TDMKunde', dessen Setter den TDatasource-Instanzen das jeweilige Dataset explizit zuordnet.

Im Designer verwende ich die globale Instanz zum Testen und designen.
Per GExperts ('Set Component Properties') sorge ich dafür, das keine Verbindung, keine Query 'aus Versehen' implizit erstellt wird.

dataspider 7. Jan 2013 07:50

AW: Woher kommt globale Variable für Datenmodule
 
@@FurtBichler

So werde ich es auch machen. DataSource auf das Formular und die Zuweisung zur Laufzeit auf das erzeugte DM.
Ich habe mein Testprojekt so erweitert, das ich die Formulare mehrfach erzeugen kann.
Schon beim testen war mir klar, dass es gar nicht anders funktionieren kann.

Wenn ich 2 Formulare erzeuge, verwenden logischerweise beide das erste erzeugte Datenmodul, das 2. DM wird nutzlos erzeugt.
Ich meine, wenn die DataSource Eigenschaft der Grid im OI zugewiesen wird.

Komisch, dass manches - was eigentlich so logisch ist - einen das Hirn so vernebeln kann...

Frank

Furtbichler 7. Jan 2013 08:15

AW: Woher kommt globale Variable für Datenmodule
 
Nicht vergessen: Zur Sicherheit die globale Variable umbenennen (ich meine, ich hätte Probleme gehabt, die Deklaration zu entfernen).

Alternativ solltest Du auf keinen Fall (so wie in meinem Beispiel), die Eigenschaft 'DMxxx : TDatenModul' so nennen, wie die globale Variable. Ich bin da mehrmals sowas von auf die Fresse gefallen. Hab heute noch einen Überbiff defwegen.

Uwe Raabe 7. Jan 2013 09:57

AW: Woher kommt globale Variable für Datenmodule
 
Zitat:

Zitat von Furtbichler (Beitrag 1198054)
Ja, aber wenn doch keine Instanz erzeugt wird?

...

Oder geht es nur um den Designer?

Natürlich geht es zur Laufzeit nicht, wenn keine Instanz erzeugt wird. Wohin sollten die Events auch verlinkt werden.

Für den Designer wird allerdings immer eine Instanz erzeugt. In dem Fall ist die dann aber vom Typ TDataModule.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 Uhr.
Seite 2 von 2     12   

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