发信人: lofe ()感激生活(), 信区: BorlandDev
标  题: 斑竹贡献——Delphi 小技巧两则
发信站: 哈工大紫丁香 (Mon Sep  4 16:16:14 2000), 转信

Delphi 小技巧两则

Flier


    最近在研究类及类方法时发现一些很有趣的用法,
这里挑出两则最有用的与大家分享。

一、访问保护属性

     众所周知,delphi的对象有private、protected和public
 三个级别的访问控制。而delphi有一个奇怪的规则,就是在同
 一个unit里的对象可以互相访问对方的 protected 级别属性!
 利用这个特性,我们可以轻松访问任意对象的 protected 级别
 属性。虽然这样不是很符合面向对象编程的封装的思想,但有时
 的确是非常有用的。
     比如在使用TDBGrid时,我们对如何获得其Row和Col非常头疼,
 其实在TDBGrid中,Row和Col都是protected级别的属性,我们只要
 在需要使用这两个属性的unit的interface里声明
 
   TFakeGrid = class(TDBGrid);
   
     然后就可以使用 TFakeGrid(ADBGrid).Row 和 TFakeGrid(ADBGrid).Col
 轻松访问了,这个规则对protected里的方法同样适用。
 
二、类方法的使用

      类方法(Class methods)是一类特殊的方法,它们在声明时要以class开头
      
  type
    TFigure = class
    public
      ...    
      class procedure GetInfo(var Info: TFigureInfo); virtual;
      ...
    end;
    
      实现时也以class开头
      
  class procedure TFigure.GetInfo(var Info: TFigureInfo);
  begin
    ...
  end;
      (具体意义请自行查看帮助)
      
      乍一看好象平时没有遇到过这个东东,也没有看到过谁用过这个东东,
  好象这个东东也没有什么大作用,其实不然……
      比如我们有时为输入密码或其他常用数据专门做一个form,但由于其代码
  都在form定义的unit里面,所以在使用时仅仅需要几行代码,比如
    
    with TfrmPassword.Create(nil) do
    try
      ShowModal;
    finally
      Free;
    end;
    
      虽然这样的代码已经很简洁,但如果写个十七八个还是很讨厌的。利用类方法
  可以使其更简洁!一行足以……
  
  TfrmPassword = class(TForm)
    ...
  public
    { Public declarations }
    class function Execute: TModalResult;
  end;

  ...
  class function TfrmPassword.Execute: TModalResult;
  begin
    with TfrmPassword.Create(nil) do
    try      
      Result := ShowModal;
    finally
      Release; // 注意此处必须为release不能为free!
    end;
  end;

  然后只用一行
  
    TfrmPassword.Execute;
    
  即可直接完成调用……是否很爽^_^
         
--
 .  生命的意义在于   /\   ____\ /\_ \   /\_\         强烈抗议北约野蛮行径!  . 
 .      希望、       \ \  \___/_\/\ \   \/_/__     __    _ _★   保卫和平!  . 
 .      工作、        \ \   ____\\ \ \    /\  \  /'__`\ /\`'_\   打倒北约!  . 
 .    爱你的人、       \ \  \___/ \ \ \___\ \  \/\  __//\ \ \/   振兴中华!  . 
 .   和你爱的人         \ \___\    \ \_____\ \__\ \____\ \ \_\   还我同胞!  . 
 .      ……             \/___/     \/_____/\/__/\/____/  \/_/ @126.com      . 
※ 修改:.haojs 于 Sep  4 16:11:18 修改本文.[FROM: bbs.hit.edu.cn]
--
※ 转寄:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: bbs.hit.edu.cn]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: haojs.bbs@bbs.whnet.]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.285毫秒