Delphi中Frame的使用方法(1)

Frame是组件面板上的第一个组件,但不是每个人都知道怎么用它,因为它不像Button和Label一样简单明了。实际上,Frame按钮只是打开一个Frame的列表,如果你没有创建任何的Frame,自然什么也不会看到。

那么Frame到底是什么呢?简单来说:

1. Frame是组件容器,类似Panel

2. Frame在使用上类似Components组件,但并没有构造器和解析器,依赖于父容器完成Destroy的工作

3. Frame可以继承和嵌套

4. Frame内部的控件都是公开的,可以在IDE里重置属性和事件,所以frame的内部封装一般都是松散的。访问frame上的组件用frame.control方式

5. Frame的使用范围仅在当前工程内

6. Frame的使用不像一般组件component有独立的功能,很多时候需要和父容器耦合在一起

看了半天还是不明白?看个例子吧:

上图是一个客户信息的Frame,因为在客户信息在很多的地方都需要显示,并且带编辑,查询,发邮件等按钮。当然你可以每次用到都拷贝一遍,但是做成frame组件,用的时候只要告诉frame客户id,剩下都交由组件本身完成,岂不是方便很多?

所以,frame和普通components组件一样,都是为复用设计的。只是frame是Delphi的特技,是一种简化版组件。如果你有一组可视化组件的集合,在多个地方重复出现,就应该考虑使用Frame了。

如何创建一个Frame呢,如图:

你可以把frame添加到组件面板,如图:

时间: 2024-08-25 03:58:36

Delphi中Frame的使用方法(1)的相关文章

Delphi中Frame的使用方法(2)

Frame在写代码时和一般组件有什么不同呢?比如(1)中的客户信息的frame,如果想重写客户编辑按钮的click事件,会发生什么呢: procedure TBusOnSiteManager.FrameCustomerButtonEditCustomerClick(Sender: TObject);begin  inherited;  FrameCustomer.ButtonEditCustomerClick(Sender); end; 可见,IDE会自动加上调用Frame中按钮click的方法

delphi中VirtualStringTree树使用方法之终结篇!

delphi中VirtualStringTree树使用方法之终结篇 2011-07-01 14:06 VirtualStringTree 的用法详解:作者:张志宝go淘宝 例子:创建了一个树名为VirtualStringTree1,第一列显示数据库字段ID的值,标题为编号:第二列显示字段Name的值,标题为名字.一.[TVirtualStringTree常用属性]    BorderStyle   :设置边框选项  bsSingle设置单边框   为TVirtualStringTree添加列及列

Delphi中Twebbrowser的document 对象的属性、方法、事件一览(转)

Delphi中Twebbrowser的document 对象的属性.方法.事件一览(转) 2012-12-07 10:19:39|  分类: Delphi 零碎 |  标签:webbrowser  属性  方法  事件  delphi   |举报 |字号大中小 订阅 {ihtmldocument2 方法:}write //写入writeln //写入并换行open //打开一个流,以收集 document.write 或 document.writeln 的输出close //关闭并输出用 do

[转]Delphi中,让程序只运行一次的方法

program onlyRunOne; uses Forms,Windows,SysUtils, Dialogs, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} var myMutex:HWND; begin myMutex:=CreateMutex(nil,false,'11111'); //名称只能全系统唯一. if WaitForSingleObject(myMutex,0)<>wait_TimeOut then begin Application.I

Delphi中根据分类数据生成树形结构的最优方法

一. 引言:    TreeView控件适合于表示具有多层次关系的数据.它以简洁的界面,表现形式清晰.形象,操作简单而深受用户喜爱.而且用它可以实现ListView.ListBox所无法实现的很多功能,因而受到广大程序员的青睐.    树形结构在Windows环境中被普遍应用,但在数据库开发中面对层次多.结构复杂的数据,如何快速构造树形目录并实现导航呢?    二. 实现关键技术:    在Delphi提供的控件中包含了TreeView控件,但树的具体形成还需要用户编写代码.即它的列表项要在程序

Delphi中文件流的使用方法

在Delphi中,所有流对象的基类为TStream类, 其中定义了所有流的共同属性和方法.TStream类中定义的属性介绍如下: 1.Size: 此属性以字节返回流中数据大小. 2.Position: 此属性控制流中存取指针的位置. Tstream中定义的虚方法有四个:1.Read:此方法实现将数据从流中读出.函数原形为:Function Read(var Buffer;Count:Longint):Longint;virtual;abstract;参数Buffer为数据读出时放置的缓冲区,Co

Delphi中编写OwnerDraw方式按钮的方法以及注意点

{在Win32标准控件库中(comctl32.dll)的控件绝大部分的控件都支持自画(OwnerDraw)功能的设置,这里以按钮为例子说说此类控件在delphi中的编写方式以及应该注意的问题!由于标准的按钮都有一套规定的外观标准(由windows的comctl32.dll中的代码绘制),为了给用户一个自己绘制控件的机会,多数的控件都支持在创建的时候设置一个标志来告诉系统这个控件需要自己绘制,例如按钮中有:BS_OWNERDRAW,菜单的有:MF_OWNERDRAW等等(还有诸如:ComboBox

delphi 中TStringList Clear 方法的时候该对象有没有被释放

delphi 中TStringList 通过function AddObject(const S: string; AObject: TObject): Integer; 方法添加了一个对象,请问我在调用Clear 方法的时候该对象有没有被释放 object里存的只是指向对象的指针,clear只是把指针清除了,对象并没有被释放.TObjectList可以自动释放对象,剩下的TList,StringList等List类型的都需要手动释放.

Delphi中ListView中实现自定义删除功能的方法

Delphi中ListView中实现自定义删除功能的方法 第一种:有时删除文件会出现文件删不掉现象 if lvMain.InnerListView.ItemIndex <> -1 then begin // DoContextMenuVerb(lvMain.SelectedFolder, 'delete'); DoContextMenuVerbB(lvMain.Folders[lvMain.InnerListView.ItemIndex], 'delete'); 第二种:删除功能很强大,建议使