Creo que para esto se pueden usar las propiedades MDIChildCount y MDIChildren de TForm.
Por ejemplo para un form2 se puede preguntar si ya está entre los que están creados/abiertos.
Código Delphi
[-]
var
i:Integer;
begin
for i := 0 to (Self.MDIChildCount - 1) do begin
if (Self.MDIChildren[i] = form2) then begin
MessageDlg('Ya está abierto...', mtInformation, [mbOK], 0);
Exit;
end;
end;
form2 := TForm2.Create(Self);
Puedes colocarlo dentro de un procedimiento para automatizarlo...