It is possible but very prone to error. This code shows how you can switch out a form in a panel in a button click event:
procedure TMainStockForm.StockTakeBtnClick(Sender: TObject);
begin
LockWindowUpdate(Self.Handle);
Panel1.Visible := true;
try
StockTakeBtn.Down := true;
StockTakeForm.WindowState := wsMaximized;
StockTakeForm.ShowForm;
ShowWindow(StockTakeForm.Handle,SW_SHOWMAXIMIZED);
finally
Panel1.Visible := false;
LockWindowUpdate(0);
end;
end;
Make sure your inner form (StockTakeForm in my example) does not rely on a ModalResult.
Having said this, I think it is a much better option to put all of your "inner form" code inside a page control and switch tabs. Two inner forms in a single form at the same time probably won't work, but you could just use panels or page controls for this too.
Anyway have a play with the example and see how you go. Good luck! :)