Die Art und Weise, MDI funktioniert nicht Gel mit was Sie versuchen zu tun.
Wenn Sie das "MDI" -Format benötigen, sollten Sie entweder das integrierte oder ein commercial Docking-Paket in Betracht ziehen und das Docking-Setup verwenden, um das MDI-Feeling nachzuahmen.
In meinen Delphi-Anwendungen verwende ich häufig TFrames und ersetze sie zum Hauptformular und maximiere sie, damit sie den Kundenbereich einnehmen. Dies gibt Ihnen etwas, ähnlich wie Outlook aussieht. Es geht ein wenig etwas wie folgt aus:
TMyForm = class(TForm)
private
FCurrentModule : TFrame;
public
property CurrentModule : TFrame read FModule write SetCurrentModule;
end;
procedure TMyForm.SetCurrentModule(ACurrentModule : TFrame);
begin
if assigned(FCurrentModule) then
FreeAndNil(FCurrentModule); // You could cache this if you wanted
FCurrentModule := ACurrentModule;
if assigned(FCurrentModule) then
begin
FCurrentModule.Parent := Self;
FCurrentModule.Align := alClient;
end;
end;
es zu benutzen, können Sie dies einfach tun:
MyForm.CurrentModule := TSomeFrame.Create(nil);
Es ist ein gutes Argument, das Sie Schnittstellen (Erstellen einer IModule Schnittstelle oder etwas) verwenden sollten das du benutzt. Ich mache das oft, aber es ist komplexer als nötig, um das Konzept hier zu erklären.
HTH