10

我像往常一样四处闲逛,碰到了一些框架讨论。

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

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

这是我经过个人深思熟虑后的做法。

还有什么其他方式可以使用框架?

4

4 回答 4

17

这是一种方式,它没有任何问题。另一种方法是在视觉上进行。因此,您基本上可以将框架添加到表单中。要做到这一点,你:

  • 创建你的框架。
  • 转到您希望放置框架的表格。
  • 添加框架组件(标准选项卡)
  • 从下拉列表中选择您的框架。
  • 就是这样!
于 2009-09-30T10:33:27.040 回答
7

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

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
于 2009-09-30T17:47:21.420 回答
6

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

这不允许您在 Frame 组件位于表单上时立即编辑 Frame 上组件的属性。但我认为这是一件好事。

除了将框架注册为组件之外,您还需要做一件事,正如我在这篇关于Delphi 的文章中所解释的那样 – 框架作为可视组件 – 不要忘记您的 Sprig!.

这些知识不是我的:我是在今年早些时候在圣何塞举行的Delphi Live 会议上Ray Konopka那里得到的。

于 2009-09-30T13:24:24.720 回答
2

这更像是一个否定的答案,但我尝试了一条路线,其中包括为有点复杂的 GUI 重新设置 TFrames。

起初一切正常,但是当应用程序成熟并且更多事件开始飞行时,我不得不禁用并在更改之前处理一段时间(20ms)的消息,然后在更改框架时仍然偶尔会崩溃。

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

于 2009-09-30T14:05:20.983 回答