• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

delphi面向对象编程思想之:对象、对象引用、对象克隆

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一, 示例一,理解对象的引用:我们要搞清楚进行对象赋值的两个不同概念,

其一,是使用赋值操作符(:=)将一个对象的引用赋值给一个对象变量,产生的效果是

这两个变量指向的是同一个对象。其二,使用Assign或AssignTo方法可以将对象属性进行复制,

得到两个状态完全一样的两个对象。

 

View Code
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 
= class(TForm)
    BtnSet: TButton;
    dlgFont1: TFontDialog;

    mmo1: TMemo;
    BtnUndo: TButton;
    
procedure BtnSetClick(Sender: TObject);
    
procedure FormCreate(Sender: TObject);
    
procedure BtnUndoClick(Sender: TObject);
  
private
    
{ Private declarations }
  
public
    
{ Public declarations }
  
end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.BtnSetClick(Sender: TObject);
begin
   
if dlgFont1.Execute then
   mmo1.Font:
=dlgFont1.Font;
end;

procedure TForm2.BtnUndoClick(Sender: TObject);
begin
  mmo1.Font:
=dlgFont1.Font; //字体不会还原,因为两者是同一个对象。
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  mmo1.Lines.Add(
'一个可以任意设置字体和复原字体的例子');
  dlgFont1.Font:
=mmo1.Font;
  
//这里dlgFont1.Font只是复制了mmo1.font的对象引用  dlgFont1.Font ,mmo1.Font 指向的是同一个对象 ;
end;

end.

 

示例二,应用了对象复制

 

View Code
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 
= class(TForm)
    BtnSet: TButton;
    dlgFont1: TFontDialog;
    mmo1: TMemo;
    ForginalFont:TFont;
    BtnUndo: TButton;
    
procedure BtnSetClick(Sender: TObject);
    
procedure FormCreate(Sender: TObject);
    
procedure BtnUndoClick(Sender: TObject);
  
private
    
{ Private declarations }
  
public
    
{ Public declarations }
  
end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.BtnSetClick(Sender: TObject);
begin
   
if dlgFont1.Execute then
   mmo1.Font:
=dlgFont1.Font;  //dlgFont1的font对象属性发生改变之后,赋值给mmo1.font控制字体样式
end;

procedure TForm2.BtnUndoClick(Sender: TObject);
begin
  mmo1.Font.Assign(ForginalFont);          
//将 ForginalFont 赋值给mmo1.Font
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  mmo1.Lines.Add(
'一个可以任意设置字体和复原字体的例子');
  ForginalFont:
=TFont.Create;            //这里我们创建了font对象ForginalFont来保存还原的字体属性,而不只是引用
  ForginalFont.Assign(mmo1.Font);        
//将创建的font对象,复制给mmo1.font一份
end;

end.

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi中的字符串(还解释了shortstring)good发布时间:2022-07-18
下一篇:
Delphi代码中嵌入ASM代码(简单明了)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap