我经常将一个TForm后代嵌入到另一个TForm后代中,如下所示:
var
Form1: TForm1;
Form2: TForm2;
begin
Form2.Parent := Form1;
Form2.BorderStyle := bsNone;
Form2.Align := alClient;
Form2.Show;
end;通常情况下,这是很好的工作,但有时Form2中的控件没有正确地对齐。对于这类问题有什么一般的解决办法吗?
有人知道是什么导致了这种“不一致”吗?
我知道我可以使用TFrame来完成这类工作,但是我有大量的库代码需要重写,我不知道为什么TForm in TForm方法不能工作?
编辑:--我在这里发现了组件TcxListView是罪魁祸首,我已经向组件供应商(DevExpress)提交了一份bug报告:
http://www.devexpress.com/issue=B194161
编辑2: DevExpress的开发人员分析了这个问题,并说这实际上是Embarcadero在TGridPanel组件中的一个缺陷:
http://qc.embarcadero.com/wc/qcmain.aspx?d=90324
发布于 2010-12-08 09:53:16
我也这样做,我使用以下例程来实现这一点:
procedure TMyForm.PlaceInsideContainer(Container: TWinControl);
begin
Parent := Container;
Align := alClient;
BorderIcons := [];
BorderStyle := bsNone;
ParentBackground := True;
Show;
end;我对此没有异议。我能想象到的唯一不同之处可能是BorderIcons的分配,但我怀疑这会导致问题。
发布于 2010-12-08 11:01:17
我读到了一个类似的问题(你必须在谷歌上搜索),TeamB的回答是不要这么做,因为行为是不可预测的,你应该使用TFrame (这就是我一直做的)。
https://stackoverflow.com/questions/4385948
复制相似问题