周五 發表於 2021-12-16 10:20:00

Delphi TFrame[1] 介绍

<p><span style="font-size: 16px"><strong>Delphi TFrame 介绍</strong></span></p>
<p><span class="transSent" style="font-size: 16px" data-group="0-0">TFrame是组件的容器;<span class="transSent" data-group="0-1">它可以嵌套在窗体或其他框架中。</span></span></p>
<p><span class="transSent" style="font-size: 16px" data-group="0-0">单元:Forms</span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:delphi;gutter:true;"><span style="font-size: 16px">{ 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;
</span></pre>
</div>
<p><span style="font-size: 16px">描述:</span></p>
<ul>
<li class="_tgt transPara grammarSection"><span class="transSent" style="font-size: 16px" data-group="8-0">当你创建Frames时,它们被实现为TFrame的后代。</span></li>
<li class="_tgt transPara grammarSection"><span class="transSent" style="font-size: 16px" data-group="10-0">Frame 和 Form 一样,是其他组件的容器。<span class="transSent" data-group="10-1">它使用与Form 相同的所有权机制来自动实例化和销毁其上的组件,并使用相同的父子关系来同步组件属性。</span></span></li>
<li class="_tgt transPara grammarSection"><span class="transSent" style="font-size: 16px" data-group="10-0"><span class="transSent" data-group="10-1"><span class="transSent highlight" data-group="10-2">但是Frame&nbsp;可以嵌套在Form 或其他框架中,并且它们可以保存在Component面板上,以便于重用。</span></span></span></li>
<li class="_tgt transPara grammarSection"><span class="transSent" style="font-size: 16px" data-group="10-0"><span class="transSent" data-group="10-1"><span class="transSent highlight" data-group="10-2"><span class="transSent" data-group="10-3">在创建并保存Frames之后,它继续作为一个单元运行,并从它包含的组件(包括其他Frames )中继承更改。<span class="transSent" data-group="10-4">此外,嵌入式Frame 继续继承对其派生的 Frame&nbsp;所做的更改。</span></span></span></span></span></li>
<li class="_tgt transPara grammarSection"><span class="transSent" style="font-size: 16px" data-group="10-0"><span class="transSent" data-group="10-1"><span class="transSent highlight" data-group="10-2"><span class="transSent" data-group="10-3"><span class="transSent" data-group="10-4"><span class="transSent" data-group="4-0">Frame 对于组织应用程序中多个位置使用的控件组非常有用。<span class="transSent highlight" data-group="4-1">例如,如果你有一个在多个窗体上使用的位图,你可以把它放在一个框架中,并且应用程序的资源中只包含该位图的一个副本。<span class="transSent" data-group="4-2">您还可以描述一组编辑字段,这些字段用于编辑带有框架的表,并在需要向表中输入数据时使用它们。</span></span></span></span></span></span></span></span></li>
</ul>
<p><span style="font-size: 16px">如何使用和修改</span></p>
<ul>
<li><span class="transSent" style="font-size: 16px" data-group="7-0">当将Frames拖放到窗体或其他容器上时,Delphi声明一个从所选Frames派生的新类。<span class="transSent" data-group="7-1">(类似地,当你向一个项目添加一个新表单时,Delphi会声明一个从TForm继承而来的新类。)</span></span></li>
<li><span class="transSent" style="font-size: 16px" data-group="7-0">这意味着后来对原始(祖先)Frames的更改会传播到嵌入Frames,但对嵌入Frames的更改不会向后传播到祖先Frames。</span></li>
<li><span class="transSent" style="font-size: 16px" data-group="9-0">例如,假设您想要组装一组数据访问组件和数据感知控件,以便在多个应用程序中重复使用。<span class="transSent" data-group="9-0"><span class="transSent" data-group="9-1">实现这一目的的一种方法是将组件收集到组件模板中;<span class="transSent" data-group="9-2">但是,如果您开始使用模板,后来改变了您对控件的安排的想法,您将不得不返回并手动更改放置模板的每个项目。</span></span></span></span></li>
<li><span class="transSent" style="font-size: 16px" data-group="11-0">另一方面,如果您将数据库组件放入一个框架中,那么以后只需要在一个地方进行更改;<span class="transSent" data-group="11-1">当重新编译项目时,对原始框架的更改会自动传播到其嵌入的子代。<span class="transSent" data-group="11-2">同时,您可以自由修改任何嵌入Frames,而不影响原始Frames或它的其他嵌入后代Frames。<span class="transSent" data-group="11-3">修改嵌入式框架的唯一限制是不能向其添加组件。</span></span></span></span></li>
<li><span class="transSent" style="font-size: 16px" data-group="11-0"><span class="transSent" data-group="11-1"><span class="transSent" data-group="11-2"><span class="transSent" data-group="11-3"><span class="transSent" data-group="15-0">除了简化维护之外,框架还可以帮助您更有效地使用资源。<span class="transSent" data-group="15-1">例如,要在应用程序中使用位图或其他图形,可以将该图形加载到TImage控件的Picture属性中。</span></span></span></span></span></span></li>
<li><span class="transSent" style="font-size: 16px" data-group="11-0"><span class="transSent" data-group="11-1"><span class="transSent" data-group="11-2"><span class="transSent" data-group="11-3"><span class="transSent" data-group="15-0"><span class="transSent" data-group="15-1"><span class="transSent" data-group="15-2">但是,如果在一个应用程序中重复使用相同的图形,那么在窗体上放置的每个Image对象都会导致该图形的另一个副本被添加到窗体的资源文件中。<span class="transSent" data-group="15-3">(这是真的,即使你设置TImage。<span class="transSent" data-group="15-4">图片一次,并将Image控件保存为组件模板。)</span></span></span></span></span></span></span></span></span></li>
<li><span class="transSent" style="font-size: 16px" data-group="11-0"><span class="transSent" data-group="11-1"><span class="transSent" data-group="11-2"><span class="transSent" data-group="11-3"><span class="transSent" data-group="15-0"><span class="transSent" data-group="15-1"><span class="transSent" data-group="15-2"><span class="transSent" data-group="15-3"><span class="transSent" data-group="15-4"><span class="transSent" data-group="15-5">一个更好的解决方案是将Image对象放到一个框架上,将图形加载到其中,然后在您希望图形出现的地方使用该框架。<span class="transSent" data-group="15-6">这样可以生成更小的表单文件,而且还可以通过修改原始帧上的Image来在任何地方更改图形。</span></span></span></span></span></span></span></span></span></span></span></li>
</ul>
<p><span style="font-size: 16px">&nbsp;如何分享</span></p>
<ul>
<li class="_tgt transPara grammarSection"><span style="font-size: 16px"><span class="transSent" data-group="0-0">您可以通过以下两种方式与其他开发人员共享框架:</span></span>
<ul>
<li class="_tgt transPara grammarSection"><span class="transSent" style="font-size: 16px" data-group="2-0">将框架添加到对象存储库中。</span></li>
<li class="_tgt transPara grammarSection"><span class="transSent" style="font-size: 16px" data-group="3-0">分配框架的单位(.pas)和形式(。<span class="transSent" data-group="3-1">DFM或.xfm)文件。</span></span></li>
</ul>
</li>
<li class="_tgt transPara grammarSection"><span class="transSent" style="font-size: 16px" data-group="7-0">要向存储库添加框架,请打开包含该框架的任何项目,在窗体设计器中右键单击,然后选择“添加到存储库”。<span class="transSent" data-group="5-1">有关更多信息,请参见使用对象存储库</span></span></li>
<li class="_tgt transPara grammarSection"><span class="transSent" style="font-size: 16px" data-group="7-0">如果你将一个帧的单元和表单文件发送给其他开发人员,他们可以打开它们并将它们添加到Component面板中。<span class="transSent" data-group="7-1">如果框架中嵌入了其他框架,他们将不得不将其作为项目的一部分打开。</span></span></li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="color: rgba(136, 136, 136, 1)">创建时间:2021.12.16  更新时间:</span></p>

</div>
<div id="MySignature" role="contentinfo">
    博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!<br><br>
来源:https://www.cnblogs.com/guorongtao/p/15696653.html
頁: [1]
查看完整版本: Delphi TFrame[1] 介绍