Hide MDIChild form

Posted in Forms

One of the ways for MDIChild form hiding is WinAPI ShowWindow and SetWindowPos functions. Hide1Click procedure hides the form and Show1Click procedure shows this form. Don't forget to remove line Application.CreateForm(TForm2, Form2) from project file and line var Form2: TForm2 from unit2.pas file.

var
  ChildForm: TForm;

...

procedure TForm1.New1Click(Sender: TObject);
begin
  if not Assigned(ChildForm) then
  begin
    ChildForm:=TForm2.Create(Application);
    ChildForm.Caption:='ChildForm';
  end;
end;

procedure TForm1.Hide1Click(Sender: TObject);
begin
  if Assigned(ChildForm) then
    ShowWindow(ChildForm.Handle, SW_HIDE);
end;

procedure TForm1.Show1Click(Sender: TObject);
begin
  if Assigned(ChildForm) then
    SetWindowPos(ChildForm.Handle, HWND_TOP, 0, 0, 0, 0, 
      SWP_NOSIZE or SWP_NOMOVE or SWP_SHOWWINDOW);
end;