How to avoid issues when embedding a TForm in another TForm?

delphi, delphi-2007, layout, tframe, vcl

Solution

I do this as well and I use the following routine to make it happen:

procedure TMyForm.PlaceInsideContainer(Container: TWinControl);
begin
  Parent := Container;
  Align := alClient;
  BorderIcons := [];
  BorderStyle := bsNone;
  ParentBackground := True;
  Show;
end;

I have no problems with this. The only difference that I could possibly imagine could be relevant is the assignment of BorderIcons, but I would doubt that causes a problem.

Problem

I often embed a `TForm` descendant into another `TForm` descendant like this: ``` var Form1: TForm1; Form2: TForm2; begin Form2.Parent := Form1; Form2.BorderStyle := bsNone; Form2.Align := alClient; Form2.Show; end; ``` Usually this works just fine, but sometimes the controls in Form2 are not aligned properly. Is there a general workaround for this sort of problem? Does anybody know what is causing this "misalignment"? I know that I could use `TFrame` for this kind of job, but I have a lot of library code that I would have to rewrite and I do not see any reason why the `TForm` in `TForm` approach should not work? Edit: I have identified the component `TcxListView` as the culprit here, I have submitted a bug report to the component vendor (DevExpress): http://www.devexpress.com/issue=B194161 Edit 2: The developers at DevExpress have analyzed the problem and said that it is actually a defect in the `TGridPanel` component by Embarcadero: http://qc.embarcadero.com/wc/qcmain.aspx?d=90324

Original source