Forum: Programmieren allgemein
by TigerLilly,
13. Sep 2017
Hi Steve,
danke für die Hinweise. Ich lerne immer gern dazu - wie könnte das (in Spring4D?) aussehen?
BTW: Ich fand gerade diese TCreateFormFunction charmant, weil so beliebige Konstruktoren möglich sind.
Forum: Programmieren allgemein
by TigerLilly,
12. Sep 2017
Ich hab jetzt mal sowas:
type
TCreateFormFunction = reference to function(Owner: TComponent): TForm;
TFormFactory = class
FList: TDictionary<string, TCreateFormFunction>;
public
constructor Create; virtual;
procedure RegisterForm(sName: String; CreateFormFunction: TCreateFormFunction);
Forum: Programmieren allgemein
by TigerLilly,
12. Sep 2017
Weil DI wie der Name sagt das Übergeben einer Abhängigkeit ist. Mein FormA müsste also FormB "injected" bekommen. Dann hilft der DI-Container.
Aber wie hast du das mit deinen Input-Popups gelöst?
Forum: Programmieren allgemein
by TigerLilly,
12. Sep 2017
Wie sagt man so schön: Been there. Done that. :- )
Das löst mein Problem nicht, weil die Forms Creatables + nicht Injectables sind. Und ich möchte sie eben nicht alle zu Beginn erzeugen + dann via DI weiterreichen.
Forum: Programmieren allgemein
by TigerLilly,
12. Sep 2017
Das mit den Instanzen stimmt natürlich + war "schlampert" von mir. Sollten besser die Klassentypen sein.
Ich könnte einen FormManager machen, ein Dictionary aus Name+TFormClass
Dann könnte FormA sowas wie FormManager.CreateAndShow('FORMB') machen.
Der FormManager sucht nach 'FormB', findet als Klassentyp TFormB + erzeugt dann TFormB.
Wie könnte das gehen?
Forum: Programmieren allgemein
by TigerLilly,
12. Sep 2017
Ich würde gern die Erzeugung von Forms entkoppeln. Wenn also FormA ein FormB erzeugt, möchte ich nicht, dass in FormA ein uses FormB steht. FormB soll sich irgendwo registrieren und von dort soll FormA ihn anfordern können.
Erreichen möchte ich, dass zB für Testzwecke ein anderer FormB sich registriert und ich aber am FormA gar nichts ändern muss.
Aber weder Generics noch Factories machen...