Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TDataModule überlisten (https://www.delphipraxis.net/117688-tdatamodule-ueberlisten.html)

Union 23. Jul 2008 14:44

Datenbank: ADS • Version: 9 • Zugriff über: TDataSet

TDataModule überlisten
 
Hallo,

in meinem Datenformular habe ich bei allen Dataset Komponenten Active und StoreActive auf True gesetzt, damit ich zur Designzeit visuell arbeiten kann.

Zur Laufzeit will ich aber das Öffnen selber steuern. Jetzt habe ich eine ganz widerliche Lösung zusammengehackt, die auch funktioniert:
  • Constructor erstellt als Kopie aus Classes.pas
  • Aus Classes.pas InitInheritedComponent und InternalReadComponentRes kopiert
  • InitInheritedComponent angepaßt: Ich merke mir alle TDataSet-Komponenten in einem Array, entferne diese Komponenten aus Components. Nach dem Aufruf von NotifyGlobalLoading füge ich die Komponenten wieder hinzu.
Das funktioniert auch - aber natürlich ist diese Lösung nicht sehr sauber (Notifications, Reihenfolge der Komponenten stimmt nicht mehr 100% usw.). Am besten wäre es natürlich, abgeleitete Komponenten zu erstellen, die eine Property DontRestoreActiveAtRuntime ;) hätten...

Gibt es da eine intelligentere Lösung?

Sherlock 23. Jul 2008 14:45

Re: TDataModule überlisten
 
Die TDataSets die mir bekannt sind haben die Property DesignActivation. DAmit kann man einstellen, daß die eben nur zur Designzeit active sein sollen.

Schau mal, vielleicht haben es Deine auch.

Sherlock

stifflersmom 23. Jul 2008 14:47

Re: TDataModule überlisten
 
Mit den GExperts kannst Du für bestimmte Komponenten definieren
welchen Zustand welcher Eigenschaft sie haben sollen.

Also, z.B. für eine DatasetSetkomponente.Active := False...

Moin

edit:
In der Konfiguration von Gexperts: set Component properties
ist ziemlich weit unten

Union 23. Jul 2008 14:53

Re: TDataModule überlisten
 
Danke für die schnellen Antworten.
@Sherlock: Leider haben die Ads-Komponenten das nicht...
@stifflersmom: Ich wollte nicht unbedingt noch einen zusätzlichen Wizard (den muß dann nämlich jeder im Projekt auf jedem PC auch installieren). Werd mir das aber mal ansehen. [edit]Habs mir angesehen, leider geht das laut man nur global komponentenspezifisch - ich will aber dieses verhalten eben nur im zentralen, Datenformular. In allen anderen Situationen sollen sich die Komponenten standardgemäß verhalten[/edit]

rwachtel 23. Jul 2008 15:14

Re: TDataModule überlisten
 
Zitat:

Zitat von Union
[...] Habs mir angesehen, leider geht das laut man nur global komponentenspezifisch - ich will aber dieses verhalten eben nur im zentralen, Datenformular. In allen anderen Situationen sollen sich die Komponenten standardgemäß verhalten[/edit]

GExperts sind Open Source. Erweitere sie doch um genau diese Eigenschaft, also dass man ein (oder mehrere) Formular(e) bestimmen kann, auf denen der Set Component Properties-Experte arbeitet.

Union 23. Jul 2008 15:20

Re: TDataModule überlisten
 
Zitat:

GExperts sind Open Source. Erweitere sie doch um genau diese Eigenschaft
Ich wollte den Aufwand begrenzen. Ich suche eine lokale Lösung die ausschließlich mit Code der Applikation funktioniert. Und wie bereits vorher erwähnt möchte ich mir die Konfiguration von diversen Entwicklungsrechnern ungern antun - es reicht schon die bisher verwendeten Komponenten synchron zu halten. Da käme mir eine zusätzliche Wizard-Konfiguration recht ungelegen.

dataspider 23. Jul 2008 15:41

Re: TDataModule überlisten
 
Zitat:

Zitat von Union
Hallo,

in meinem Datenformular habe ich bei allen Dataset Komponenten Active und StoreActive auf True gesetzt, damit ich zur Designzeit visuell arbeiten kann.

Ich denke, das StoreActive das Problem lösen sollte, oder?

Frank

Union 23. Jul 2008 15:56

Re: TDataModule überlisten
 
Zitat:

Ich denke, das StoreActive das Problem lösen sollte, oder?
Leider nicht. Denn dann werden die Tabellen ja zur [edit]Laufzeit Designzeit[/edit] nach dem Laden ebenfalls nicht geöffnet. Dann müsste ich jedesmal wenn ich das Projekt lade in das Datenformular gehen und alle manuell auf Active := True setzen. Genau das will ich ja erreichen:
  • Laden des Datenmoduls zur Designzeit: Alles soll sich automatisch öffnen
  • Laden des Datenmoduls zur Laufzeit: Alles soll geschlossen bleiben

omata 23. Jul 2008 16:50

Re: TDataModule überlisten
 
Gibt es keine Connection-Komponente über die alle Querys laufen? Dann könntest du einfach bei dieser Active = false setzen und alle Querys sind wieder deaktiviert. Das wäre dann nur noch eine Stelle, die du handisch mit einem Doppelklick bemühen müstest.

rwachtel 23. Jul 2008 17:48

Re: TDataModule überlisten
 
Damit wäre aber der umgekehrte Weg auch noch nicht gelöst...


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