在Delphi中使用框架的可接受方法是什么?

时间:2009-09-30 10:21:11

标签: delphi tframe

我正常地在SO周围散步并碰到一些框架讨论。

我主要是Delphi的爱好者而不是专业人士所以我必须学习如何以我自己的方式使用TFrame:

  • 在其单位内创建一个TFrame。
  • 将该单位添加到主表单Uses子句。
  • 拥有该TFrame类型的私有变量
  • 表单的OnCreate实例化TFrame并将其附加到Create和.Parent上的TPanel
  • 在我的一个操作集上设置了TFrame.Visible:= True和.BringToFront。

经过一番个人商议,这是我的做法。

使用这些框架还有哪些其他方法?

4 个答案:

答案 0 :(得分:13)

这是一种方式,并没有任何问题。另一种方法是,在视觉上做到这一点。所以你基本上可以将框架添加到表单中。这样做你:

  • 创建框架。
  • 转到您希望放置框架的表单。
  • 添加框架组件(标准选项卡)
  • 从下拉菜单中选择您的框架。
  • 就是这样!

答案 1 :(得分:5)

您的方法唯一的问题是您无法将同一帧的多个实例添加到给定的表单中:

Frame1 := TMyFrame.Create(Self);
Frame1.Parent := Self;
// ...
Frame2 := TMyFrame.Create(Self); // bombs out with "a component with the name MyFrame already exists"

他的解决方法是为每个实例指定一个不同的名称:

Frame1 := TMyFrame.Create(Self)
Frame1.Parent := Self;
Frame1.Name := "FirstFrame";
// ...
Frame2 := TMyFrame.Create(Self); // works now, there is no name conflict

答案 2 :(得分:4)

通过将框架注册为组件,您甚至可以更进一步。

一旦Frame组件在表单上,​​就不允许您编辑Frame上组件的属性。但我认为这是件好事。

除了将您的框架注册为组件之外,您还需要做一件事,正如我在本文中对Delphi – Frames as visual Components – don’t forget your Sprig!所述的那样。

这些知识不是我的:我今年早些时候在圣何塞的Ray Konopka session期间从Delphi Live conference获得了它。

答案 3 :(得分:2)

这是一个否定的答案,但我尝试了一条路线,其中包括为一些复杂的GUI重新创建TFrame。

起初它很好,但是当应用程序成熟并且更多事件开始飞行时,我必须禁用然后处理消息一段时间(20ms)才能更改,然后在更改帧时偶尔会崩溃。

我最终找到的罪魁祸首之一,TPopmenu也在全球数据结构中注册。这减少了问题,但它们仍然存在,所以我放弃了这个概念。