Einzelnen Beitrag anzeigen

Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: Verwendung von Datamodule in Packages

  Alt 14. Feb 2013, 08:16
Ich muß hier nochmal fragen, weil mich das langsam alle macht

Also noch mal ausführlich:
Das Package für einen Komponenteneditor enthält ein Hauptformular und mehrere Unterformulare, sowie ein Datamodule. Im Datamodule sind zentral alle Imagelisten für Actionmanager der einzelnen Formulare hinterlegt. Nach „außen“ kommt nichts, alle imagelisten werden und sollen nur in Formularen des Packages verwendet werden.

Wie gesagt, das Datamodule automatisch erzeugen geht nicht, da es eben diesen Punkt in den Projektoptionen nicht gibt.

Wenn ich das Datamodule im initialization erstelle
Delphi-Quellcode:
initialization
begin
  if not(Assigned(Datamodule_IH_Images)) then
    begin
      ShowMessage('DM_images nicht zugewiesen, wird erstellt');
      Datamodule_IH_Images := TDatamodule_IH_Images.Create(NIL);
    end;
end;

finalization
begin
  if not(Assigned(Datamodule_IH_Images)) then
    ShowMessage('DM_images not assigned')
   else
    begin
      ShowMessage('DM_images.FreeAndNil');
      FreeAndNil(Datamodule_IH_Images);
    end;
end;
Hat das den äußerst unangenehmen Seiteneffekt, dass bei jedem Erstellen des Packages alle Verweise zum Datamodule verschwinden. Heißt für den Actionmanager: die vorher verlinkten imagelisten werden im OI nicht angezeigt. Klick ich eine Actionmanager.imageliste an, steht der Verweis immer noch drin (DatamoduleXYZ.imageliste32x32), allerdings kommt dann die Fehlermeldung „ungültiger Eigenschaftswert“ …
Ich muß dann das Datamodule als Formular anzeigen, danach kann ich die imagelisten wieder neu zuweisen.
Irgendwie mag die IDE das gar nicht, dass das Datamodule im finalization freigegeben wird.

Wie macht man es nun richtig???
Wo und wie sollte man das Datamodule erstellen? Vorallem, wo man das suchen sollte…
Wenn ich das Datamodule dort erstelle und freigebe, wo ich die Hauptform erstelle und aufrufe, habe ich das Problem, dass wenn die Hauptform nicht mit showmodal angezeigt wird, das Datamodule zu früh freigegeben wird.

Danke & Gruß Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat