我经常将TForm后代嵌入到另一个TForm后代中,如下所示:

var
  Form1: TForm1;
  Form2: TForm2;
begin
  Form2.Parent      := Form1;
  Form2.BorderStyle := bsNone;
  Form2.Align       := alClient;
  Form2.Show;
end;


通常这可以正常工作,但是有时Form2中的控件未正确对齐。是否有针对此类问题的一般解决方法?

有人知道是什么原因导致这种“错位”吗?

我知道我可以使用TFrame进行此类工作,但是我有很多必须重写的库代码,而且我看不到TForm中的TForm方法不起作用的任何原因?

编辑:我在这里将组件TcxListView确定为罪魁祸首,我已经向组件供应商(DevExpress)提交了错误报告:

http://www.devexpress.com/issue=B194161

编辑2:DevExpress的开发人员分析了问题,并说这实际上是Embarcadero的TGridPanel组件中的缺陷:

http://qc.embarcadero.com/wc/qcmain.aspx?d=90324

最佳答案

我也这样做,并且使用以下例程来实现它:

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


我对此没有任何问题。我可以想象的唯一可能与之相关的区别是BorderIcons的分配,但是我怀疑这会引起问题。

关于delphi - 在另一个TForm中嵌入一个TForm时如何避免出现问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4385948/

10-13 03:34