Link to home
Start Free TrialLog in
Avatar of delpro
delpro

asked on

dock on startup

I have a MainForm with a panel and 2 orher forms(form 1 and form 2)
how can i dock form1 and form2 automatic to MainForm when MainForm is shown

Avatar of aubs
aubs

Assuming that you have set your panel to be a docksite, you can use the manualdock method:


//in form1
public
    { Public declarations }
  procedure DockMe(NewDockSite: TWinControl);

procedure TForm1.DockMe(NewDockSite: TWinControl);
begin
  form1.ManualDock(NewDockSite);
end;

//in form2
public
    { Public declarations }
  procedure DockMe(NewDockSite: TWinControl);

procedure TForm2.DockMe(NewDockSite: TWinControl);
begin
  form2.ManualDock(NewDockSite);
end;

//in Mainform

procedure TMainForm.FormShow(Sender: TObject);
begin
  form1.Show;
  form1.DockMe(Panel1);
  form2.Show;
  form2.DockMe(Panel1);
end;


This could be improved by creating a decendent form TDockingForm which has the DockMe procedure already build in. Then create forms 1 & 2 as TDockingForms. This probably is not worth the effort for just 2 forms, but may be worth considering if you have several forms to dock.

The DockMe procedure could also be improved to include alignment parameters, see the on line help for ManualDock.




procedure TForm1.DockMe(NewDockSite: TWinControl,ControlSide: TAlign = alNone);
begin
  form1.ManualDock(NewDockSite, ControlSide);
end;
Avatar of delpro

ASKER

Thanks
ASKER CERTIFIED SOLUTION
Avatar of aubs
aubs

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial