⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jq_2.htm

📁 对于学习很有帮助
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Delphi 小技巧两则</title>
</head>

<body bgcolor="#FFFFFF" text="#000000">

<p align="center"><big><big><big>Delphi 小技巧两则</big></big></big><br>
作者:Flier</p>

<p><br>
  最近在研究类及类方法时发现一些很有趣的用法,这里挑出两则<br>
最有用的与大家分享。<br>
<br>
  一、访问保护属性<br>
<br>
  众所周知,delphi的对象有private、protected和public三个级<br>
别的访问控制。而delphi有一个奇怪的规则,就是在同一个unit里的<br>
对象可以互相访问对方的protected级别属性!<br>
<br>
  利用这个特性,我们可以轻松访问任意对象的protected级别属<br>
性。虽然这样不是很符合面向对象编程的封装的思想,但有时的确是<br>
非常有用的。<br>
<br>
  比如在使用TDBGrid时,我们对如何获得其Row和Col非常头疼,<br>
其实在TDBGrid中,Row和Col都是protected级别的属性,我们只要在<br>
需要使用这两个属性的unit的interface里声明  <br>
<br>
  TFakeGrid = class(TDBGrid);  <br>
<br>
  然后就可以使用TFakeGrid(ADBGrid).Row和TFakeGrid(ADBGrid).Col<br>
轻松访问了,这个规则对protected里的方法同样适用。<br>
<br>
  二、类方法的使用<br>
<br>
  类方法(Class methods)是一类特殊的方法,它们在声明时要<br>
以class开头  <br>
<br>
  type<br>
<br>
  TFigure = class<br>
<br>
  public<br>
<br>
  ... <br>
<br>
  class procedure GetInfo(var Info: TFigureInfo); virtual;<br>
<br>
  ...<br>
<br>
  end;<br>
  <br>
<br>
  实现时也以class开头<br>
<br>
  class procedure TFigure.GetInfo(var Info: TFigureInfo);<br>
<br>
  begin<br>
<br>
  ...<br>
<br>
  end;<br>
<br>
  (具体意义请自行查看帮助)  <br>
<br>
  乍一看好象平时没有遇到过这个东东,也没有看到过谁用过这个<br>
东东,好象这个东东也没有什么大作用,其实不然……<br>
<br>
  比如我们有时为输入密码或其他常用数据专门做一个form,但由<br>
于其代码都在form定义的unit里面,所以在使用时仅仅需要几行代码,<br>
比如<br>
<br>
  with TfrmPassword.Create(nil) do<br>
<br>
  try<br>
<br>
  ShowModal;<br>
<br>
  finally<br>
<br>
  Free;<br>
<br>
  end;<br>
<br>
  虽然这样的代码已经很简洁,但如果写个十七八个还是很讨厌的<br>
。利用类方法可以使其更简洁!一行足以……<br>
<br>
  TfrmPassword = class(TForm)<br>
<br>
  ...<br>
<br>
  public<br>
<br>
  { Public declarations }<br>
<br>
  class function Execute: TModalResult;<br>
<br>
  end;<br>
<br>
  ...<br>
<br>
  class function TfrmPassword.Execute: TModalResult;<br>
<br>
  begin<br>
<br>
  with TfrmPassword.Create(nil) do<br>
<br>
  try <br>
<br>
  Result := ShowModal;<br>
<br>
  finally<br>
<br>
  Release; //注意此处必须为release不能为free!<br>
<br>
  end;<br>
<br>
  end;<br>
<br>
  然后只用一行  <br>
<br>
  TfrmPassword.Execute;  <br>
<br>
  即可直接完成调用……是否很爽^_^</p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -