在Delphi中使用框架的公认方式是什么?

在Delphi中使用框架的公认方式是什么?,delphi,tframe,Delphi,Tframe,我像往常一样四处闲逛,撞到了一些相框上 我主要是Delphi爱好者,而不是专业人士,因此我必须学习如何以自己的方式使用TFrames,即: 在其单元内创建一个TFrame 将该单位添加到主表单Uses子句中 具有该TFrame类型的私有变量 一旦创建表单,就会实例化TFrame并将其附加到Create和.Parent上的TPanel 在我的一个操作中,设置TFrame.Visible:=True和.BringToFront 这是我个人深思熟虑后的做法 还有什么方法可以使用这些框架呢?这是一种

我像往常一样四处闲逛,撞到了一些相框上

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

  • 在其单元内创建一个TFrame
  • 将该单位添加到主表单Uses子句中
  • 具有该TFrame类型的私有变量
  • 一旦创建表单,就会实例化TFrame并将其附加到Create和.Parent上的TPanel
  • 在我的一个操作中,设置TFrame.Visible:=True和.BringToFront
这是我个人深思熟虑后的做法


还有什么方法可以使用这些框架呢?

这是一种方法,没有什么问题。另一种方法是以视觉方式进行。因此,基本上可以将框架添加到表单中。为此,请:

  • 创建您的框架
  • 转到您希望放置相框的表单
  • 添加框架构件(标准选项卡)
  • 从下拉列表中选择您的帧
  • 就这样
您甚至可以更进一步,将帧注册为组件

这样,当框架构件位于表单上时,就不允许编辑框架构件的属性。但我认为这是一件好事

正如我在本文中所解释的,除了将框架注册为组件之外,还需要做一件事


这些知识不是我的:今年早些时候,我是从他在圣何塞的一次会议上得到的。

这是一个否定的答案,但我尝试了一种方法,包括为有点复杂的GUI重新安装TFrames

起初它运行得很好,但当应用程序成熟且更多事件开始出现时,我不得不在更改前禁用消息并处理消息一段时间(20毫秒),然后在更改帧时仍偶尔发生崩溃


我最终发现的罪魁祸首之一,TPopmenu也在全局数据结构中注册。这减少了问题,但问题仍然存在,因此我不再使用这个概念。

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

Frame1 := TMyFrame.Create(Self);
Frame1.Parent := Self;
// ...
Frame2 := TMyFrame.Create(Self); // bombs out with "a component with the name MyFrame already exists"
his的解决方法是为每个实例指定不同的名称:

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

这也是我首选的方法,但在某些情况下,我发现“按需”创建帧很有用。特别是对于作为选项卡控件的一部分使用并且可能永远不会显示的帧。@sveinbringsli:是的,这也是我的想法。如果你的用户只会使用一个或两个,那么创建它们会浪费太多内存。谢谢你的想法。我通常每个功能只需要一个帧,但它很快就会发生,我需要多个实例。非常感谢。是的,有道理。如果你有太多的框架,肯定会有东西坏掉。更重要的是,即使框架已被重新租用,框架的windows消息也有到达的风险。你可能还对以下内容感兴趣: