Einzelnen Beitrag anzeigen

berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Formular kann nicht erstellt werden- keine MDI Formul. aktiv

  Alt 6. Okt 2010, 11:34
Neuer Versuch, alte Probleme.

Nochmal zur Zusammenfassung: Ich habe ein Hauptformular (kein MDI!), mit dem ich verschiedene Teilprogramme starten kann. Meistens SDI, ein MDI Programm. Da alle die selben Units verwenden, möchte ich, statt mehrere .exe Dateien auszuliefern, einfach etwas wie
Delphi-Quellcode:
frmTeilprogramm1 := Teilprogramm1.Create(Application); // Erbt von TForm
frmTeilprogramm1.Show;
frmTeilprogramm1.FreeOnRelease
machen.

Wie ich aus anderen Threads / Foren entnehmen konnte, muss scheinbar wirklich das allererste erzeugt Formular ein MDI-Formular sein. Wenn ich nun mein "Start-Center" FormStyle auf fsMDIForm stelle, kann ich den o.g. Code auch verwenden, allerdings wird das MDI-Child (Teilprogramm1.Child1) nun im "Start-Center" hinter allen Buttons etc. angezeigt und nicht innerhalb des MDI-Formulars Teilprogramm1.

Auch folgende Teilen schaffen keine Abhilfe:
Delphi-Quellcode:
with Teilprogramm1.Child1 do begin
  Parent := Teilprogramm1;
  SetParentComponent(Teilprogramm1);
  ParentWindow := Teilprogramm1.Handle;
  Windows.SetParent(Handle, Teilprogramm1.Handle);
end;
Wenn es sogar möglich ist, ein normales Fenster mit SetParent dem Desktop oder anderen Programmen unterzuschieben, warum zur %$"&$§$"$§ kann ich dann nicht das MDI-Child in das Fenster bringen, in dem es sein soll?

Es ist leider auch nicht möglich (soweit ich das nun sehe), das "Hauptformular" der Anwendung zeitweise zu ändern.

Was wäre denn, wenn ich dieses (am selten benötigste) MDI-Fenster im Projektquelltext erzeugen lasse und unsichtbar schalte? Was hat das für Auswirkungen, wenn ich das "Start-Center" schließe?

So sinnlos es sich anhört, aber für den Kunden kann es unter Umständen durchaus sinnvoll sein, (trotz MDI-Anwendung!) mehrere Instanzen des MDI-Forms zu starten. Was dann? Müssen alle Formulare aus der 2ten Instanz im MDIForm angezeigt werden, das als Erstes erzeugt wurde? Das kann nicht wirklich M$ (oder wessen auch immer) Ernst sein...

Für irgendwelche Ideen wäre ich sehr dankbar. Ich fände es echt blöd, wenn ich statt 1x 5 MB .exe-Datei mit allen Teilprogrammen nun 10x 5 MB .exe-Dateien mit jeweils nur einem Formular ausliefern zu müssen -.-
  Mit Zitat antworten Zitat