Si, no es tan complicado.
Primero en propiedades del proyecto pones que solo el Form Principal (el MDI) se cree automáticamente,
los otros no.
Luego los vas creando desde código, como si se tratara de variables (lo digo así para que entiendas más claro, en realidad recuerda que son objetos), sería algo así:
Código Delphi
[-]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit3, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var f:TForm3;
begin
f:=TForm3.Create(Application);
f.Show;
end;
end.
en este caso el MDIForm se llama Form1, ubicado con su Unit1 y el MDIChild se llama Form3, con su Unit3.
Observa que debes incluir Unit3 en
Uses.
Si quieres que los MDIChild se cierren en vez de minimizarse al clickear el botón cerrar (como es lo predeterminado) asigna este código al evento OnClose del MDIChild:
Código Delphi
[-]procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;