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 更新时间: