Delphi中Frame的使⽤⽅法
Frame是组件⾯板上的第⼀个组件,但不是每个⼈都知道怎么⽤它,因为它不像Button和Label ⼀样简单明了。实际上,Frame按钮只是打开⼀个Frame的列表,如果你没有创建任何的Frame,⾃然什么也不会看到。
那么Frame到底是什么呢?简单来说:
1. Frame是组件容器,类似Panel
2. Frame在使⽤上类似Components组件,但并没有构造器和解析器,依赖于⽗容器完成Destroy的⼯作
3. Frame可以继承和嵌套
4. Frame内部的控件都是公开的,可以在IDE⾥重置属性和事件,所以frame的内部封装⼀般都是松散的。访问frame上的组件⽤l⽅式
5. Frame的使⽤范围仅在当前⼯程内
6. Frame的使⽤不像⼀般组件component有独⽴的功能,很多时候需要和⽗容器耦合在⼀起
看了半天还是不明⽩?看个例⼦吧:
上图是⼀个客户信息的Frame,因为在客户信息在很多的地⽅都需要显⽰,并且带编辑,查询,发邮件等按钮。当然你可以每次⽤到都拷贝⼀遍,但是做成frame组件,⽤的时候只要告诉frame客户id,剩下都交由组件本⾝完成,岂不是⽅便很多?
所以,frame和普通components组件⼀样,都是为复⽤设计的。只是frame是Delphi的特技,是⼀种简化版组件。如果你有⼀组可视化组件的集合,在多个地⽅重复出现,就应该考虑使⽤Frame了。
如何创建⼀个Frame呢,如图:
你可以把frame添加到组件⾯板,如图:
Frame在写代码时和⼀般组件有什么不同呢?⽐如(1)中的客户信息的frame,如果想重写客
delphi app
户编辑按钮的click事件,会发⽣什么呢:
procedure TBusOnSiteManager.FrameCustomerButtonEditCustomerClick(Sender: TObject); begin
inherited;
FrameCustomer.ButtonEditCustomerClick(Sender);
end;
可见,IDE会⾃动加上调⽤Frame中按钮click的⽅法,当然,你可以注释掉它,写上⾃⼰的代码。
因为Frame没有⾃⼰的构造器和解析器,如果你想初始化⼀些东西,可以override frame的以下两个⽅法:
public
{ Public declarations }
procedure AfterConstruction; override;  //类似OnCreate事件
procedure BeforeDestruction; override; //类型OnDestroy事件
end;
procedure TFrameCustomer.AfterConstruction;
begin
inherited;
ParentForm := GetOwner as TTAppSQLForm;  //此处取得⽗窗⼝
end;
procedure TFrameCustomer.BeforeDestruction;
begin
inherited;
end;
Frame是组件⾯板上的第⼀个组件,但不是每个⼈都知道怎么⽤它,因为它不像Button和Label ⼀样简单明了。实际上,Frame按钮只是打开⼀个Frame的列表,如果你没有创建任何的Frame,⾃然什么也不会看到。
那么Frame到底是什么呢?简单来说:
1. Frame是组件容器,类似Panel
2. Frame在使⽤上类似Components组件,但并没有构造器和解析器,依赖于⽗容器完成Destroy的⼯作
3. Frame可以继承和嵌套
4. Frame内部的控件都是公开的,可以在IDE⾥重置属性和事件,所以frame的内部封装⼀般都是松散的。访问frame上的组件⽤l⽅式
5. Frame的使⽤范围仅在当前⼯程内
6. Frame的使⽤不像⼀般组件component有独⽴的功能,很多时候需要和⽗容器耦合在⼀起
看了半天还是不明⽩?看个例⼦吧:
上图是⼀个客户信息的Frame,因为在客户信息在很多的地⽅都需要显⽰,并且带编辑,查询,发邮件等按钮。当然你可以每次⽤到都拷贝⼀遍,但是做成frame组件,⽤的时候只要告诉frame客户id,剩下都交由组件本⾝完成,岂不是⽅便很多?
所以,frame和普通components组件⼀样,都是为复⽤设计的。只是frame是Delphi的特技,是⼀种简化版组件。如果你有⼀组可视化组件的集合,在多个地⽅重复出现,就应该考虑使⽤Frame了。
如何创建⼀个Frame呢,如图:
你可以把frame添加到组件⾯板,如图:
Frame在写代码时和⼀般组件有什么不同呢?⽐如(1)中的客户信息的frame,如果想重写客

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。