La façon dont fonctionne MDI ne gèle pas avec ce que vous essayez de faire.
Si vous avez besoin du format "MDI", vous devriez envisager d'utiliser le module d'amarrage intégré ou commercial, et d'utiliser la configuration de l'ancrage pour imiter la sensation MDI.
Dans mes applications Delphi, j'utilise fréquemment des TFrames et je les mets en relation avec le formulaire principal, en les maximisant pour qu'elles occupent la zone client. Cela vous donne quelque chose de similaire à l'apparence d'Outlook. Il va un petit quelque chose comme ceci:
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;
Pour l'utiliser, vous pouvez simplement faire ceci:
MyForm.CurrentModule := TSomeFrame.Create(nil);
Il y a un bon argument que vous devez utiliser des interfaces (créant une interface IModule ou quelque chose) que vous utilisez. Je fais souvent cela, mais c'est plus complexe que nécessaire pour expliquer le concept ici.
HTH