Delphi TFrame[1] 介绍

Delphi TFrame[1] 介绍

TFrame是组件的容器;它可以嵌套在窗体或其他框架中。

单元:Forms

{ TFrame }

  TFrame = class(TCustomFrame)
  published
    property Align;
    property Anchors;
    property AutoScroll;
    property AutoSize;
    property BiDiMode;
    property Constraints;
    property DockSite;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property Color nodefault;
    property Ctl3D;
    property Font;
    property ParentBackground default True;
    property ParentBiDiMode;
    property ParentColor;
    property ParentCtl3D;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property Visible;
    property OnCanResize;
    property OnClick;
    property OnConstrainedResize;
    property OnContextPopup;
    property OnDblClick;
    property OnDockDrop;
    property OnDockOver;
    property OnDragDrop;
    property OnDragOver;
    property OnEndDock;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnGetSiteInfo;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnMouseWheel;
    property OnMouseWheelDown;
    property OnMouseWheelUp;
    property OnResize;
    property OnStartDock;
    property OnStartDrag;
    property OnUnDock;
  end;

描述:

  • 当你创建Frames时,它们被实现为TFrame的后代。
  • Frame 和 Form 一样,是其他组件的容器。它使用与Form 相同的所有权机制来自动实例化和销毁其上的组件,并使用相同的父子关系来同步组件属性。
  • 但是Frame 可以嵌套在Form 或其他框架中,并且它们可以保存在Component面板上,以便于重用。
  • 在创建并保存Frames之后,它继续作为一个单元运行,并从它包含的组件(包括其他Frames )中继承更改。此外,嵌入式Frame 继续继承对其派生的 Frame 所做的更改。
  • Frame 对于组织应用程序中多个位置使用的控件组非常有用。例如,如果你有一个在多个窗体上使用的位图,你可以把它放在一个框架中,并且应用程序的资源中只包含该位图的一个副本。您还可以描述一组编辑字段,这些字段用于编辑带有框架的表,并在需要向表中输入数据时使用它们。

如何使用和修改

  • 当将Frames拖放到窗体或其他容器上时,Delphi声明一个从所选Frames派生的新类。(类似地,当你向一个项目添加一个新表单时,Delphi会声明一个从TForm继承而来的新类。)
  • 这意味着后来对原始(祖先)Frames的更改会传播到嵌入Frames,但对嵌入Frames的更改不会向后传播到祖先Frames。
  • 例如,假设您想要组装一组数据访问组件和数据感知控件,以便在多个应用程序中重复使用。实现这一目的的一种方法是将组件收集到组件模板中;但是,如果您开始使用模板,后来改变了您对控件的安排的想法,您将不得不返回并手动更改放置模板的每个项目。
  • 另一方面,如果您将数据库组件放入一个框架中,那么以后只需要在一个地方进行更改;当重新编译项目时,对原始框架的更改会自动传播到其嵌入的子代。同时,您可以自由修改任何嵌入Frames,而不影响原始Frames或它的其他嵌入后代Frames。修改嵌入式框架的唯一限制是不能向其添加组件。
  • 除了简化维护之外,框架还可以帮助您更有效地使用资源。例如,要在应用程序中使用位图或其他图形,可以将该图形加载到TImage控件的Picture属性中。
  • 但是,如果在一个应用程序中重复使用相同的图形,那么在窗体上放置的每个Image对象都会导致该图形的另一个副本被添加到窗体的资源文件中。(这是真的,即使你设置TImage。图片一次,并将Image控件保存为组件模板。)
  • 一个更好的解决方案是将Image对象放到一个框架上,将图形加载到其中,然后在您希望图形出现的地方使用该框架。这样可以生成更小的表单文件,而且还可以通过修改原始帧上的Image来在任何地方更改图形。

 如何分享

  • 您可以通过以下两种方式与其他开发人员共享框架:
    • 将框架添加到对象存储库中。
    • 分配框架的单位(.pas)和形式(。DFM或.xfm)文件。
  • 要向存储库添加框架,请打开包含该框架的任何项目,在窗体设计器中右键单击,然后选择“添加到存储库”。有关更多信息,请参见使用对象存储库
  • 如果你将一个帧的单元和表单文件发送给其他开发人员,他们可以打开它们并将它们添加到Component面板中。如果框架中嵌入了其他框架,他们将不得不将其作为项目的一部分打开。

 

 

 

 

 

创建时间:2021.12.16  更新时间:

posted on 2021-12-16 10:20  滔Roy  阅读(379)  评论(0编辑  收藏  举报

导航