Forum: Sonstige Fragen zu Delphi
by himitsu,
31. Jul 2017
Wir haben einen TDataSource-Nachfahren der ein DataSet (pgDAC) drin hat.
Im Create holt der sich auch selber standardmäßig erstmal die Connection von einem globalen DataModul. (kann man notfalls danach was Anderes zuweisen ... man könnte sich da auch die erste Connection auf dem gemeinsamen Owner suchen, wenn im BeforeOpen noch keine Connection zugewiesen)
Dann noch paar Dinge, wie z.B. das...
Forum: Sonstige Fragen zu Delphi
by himitsu,
31. Jul 2017
Jedes Formular mit seinem eigenen DatenModul und den darauf liegenden DataSources,
sonst zeigt doch jede Form das Gleiche an, wenn die alle mit der selben DataSource arbeiten. :zwinker:
Forum: Sonstige Fragen zu Delphi
by himitsu,
31. Jul 2017
Ahhhhh, garnicht dran gedacht.
Der böse Owner und FindComponent.
Im FormDesigner wird aber auch hier dennoch die globale Instanz verwendet. (außer man leitet die Form ab und baut das in den Vorfahren ein ... vorausgesetzt die Ableitung wird richtig im FormDesigner geladen)
Forum: Sonstige Fragen zu Delphi
by himitsu,
31. Jul 2017
Die globale Variable braucht es dafür nicht. Es gilt ausschließlich der Name und die "automatische" globale Registrierung der TDataModule.
Und ja, diese Variante hatte ich auch schon beschrieben und wie bereits gesagt, muß man nachher das DataModul umbenennen, da sonst mehrere Datenmodule mit dem selben Namen global registriert sind und welches davon dann für die Verlinkung genommen wird, das...
Forum: Sonstige Fragen zu Delphi
by himitsu,
31. Jul 2017
dm := TdmFoo.Create(nil);
try
result := TfrmFoo.Create(AOwner);
result.DataModule := dm; // für Zugriffe auf das Datenmodul im Code
dm.Owner := result; // oder result.InsertComponent(dm); mit dm.Owner.RemoveComponent(dm) wenn dm.Owner<>nil
dm.Name := '';
except
dm.Free;
raise;
end;
Forum: Sonstige Fragen zu Delphi
by himitsu,
31. Jul 2017
Das leider garnicht.
Praktisch kannst du im Formdesigner immer nur mit einer globalen Instanz (Signleton) deines DatenModuls arbeiten.
Du kannst aber im Create, vor dem Inherited eine Instanz deines Datenmoduls erzeugen. (es darf aber zur Laufzeit keine automatisch erzeugte Instanz dieses Moduls existieren, bzw. diese wird vorher umbenannt oder freigegeben)
DatenModule registrieren sich...