首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在将TForm嵌入到另一个TForm中时出现问题?

如何避免在将TForm嵌入到另一个TForm中时出现问题?
EN

Stack Overflow用户
提问于 2010-12-08 09:32:11
回答 2查看 3.1K关注 0票数 8

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

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-08 09:53:16

我也这样做,我使用以下例程来实现这一点:

代码语言:javascript
复制
procedure TMyForm.PlaceInsideContainer(Container: TWinControl);
begin
  Parent := Container;
  Align := alClient;
  BorderIcons := [];
  BorderStyle := bsNone;
  ParentBackground := True;
  Show;
end;

我对此没有异议。我能想象到的唯一不同之处可能是BorderIcons的分配,但我怀疑这会导致问题。

票数 8
EN

Stack Overflow用户

发布于 2010-12-08 11:01:17

我读到了一个类似的问题(你必须在谷歌上搜索),TeamB的回答是不要这么做,因为行为是不可预测的,你应该使用TFrame (这就是我一直做的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4385948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档