Delphi 类的静态属性

原创 2002年02月24日 08:50:00

Because Delphi not provide static member for our using, so if you want a static
member of class in Delphi what should I do ?
Ok! At least there are three ways to implement this.
1,Using private global variant(in implement section of unit),but there are a lit

visibility scope in project or unit.
2,Using global variant, a more visibility scope in project or unit.a lit same as

above.
3,Using typed constant,just using compiler directive $J+ or Project properties

|compiler Option Typed constant.
There are some simple source code as follows:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TStaticMemberObject = class
  private
    class procedure SetName(const Value: string);
    class function GetName: string;
    class function StaticMethod(ReadFlag: boolean; var Value: string):boolean;
  published
    property Name: string read GetName write SetName;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TStaticMemberObject }

class function TStaticMemberObject.StaticMethod(ReadFlag: boolean;
  var Value: string): boolean;
const static: string = '';
begin
  result := True;
  if ReadFlag then
     Value := static
  else
    static := value;
end;


class function TStaticMemberObject.GetName: string;
var
  Value: string;
begin
  StaticMethod(true, Value);
  result := Value;
end;

class procedure TStaticMemberObject.SetName(const Value: string);
var
  setvalue: string;
begin
  setvalue := Value;
  StaticMethod(false, setvalue);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  so: TStaticMemberObject;
begin
  so.Name := 'Hello, my static property!';
  ShowMessage(so.Name);
  so.SetName('hi, my static property!');
  ShowMessage(so.GetName);
end;

end.

  Please pay attention to the class method used here. The Name property's modifiers

both use class method. In fact if you use normal static method with no class

directive the code still works well. like this:
    procedure SetName(const Value: string);
    function GetName: string;
Because we do not access other fields and other instance methods of this

TStaticMemberObject class or some object of TStaticMemberObject type, so there is

no AV using normal static method.
OK, if you need this trick just try it.

Delphi 中的属性property(适合初学delphi)

Propery In Delphi 前言: 适合delphi初学者,有面向对象知识和java或者vc编程经验人士阅读。 一普通属性 我们在delphi的类中常常能看到这样的代码:p...
  • my98800
  • my98800
  • 2016年09月01日 09:40
  • 1396

Delphi实现静态变量

Delphi实现静态变量 C++有静态变量,static关键字描述,其实Delphi也可以做到。 以前一般采取的是const办法来实现,如今的Delphi可以用class关键字来实...
  • ilvu999
  • ilvu999
  • 2012年10月29日 13:38
  • 493

如何在Delphi中实现C语言中静态变量的功能

如何在Delphi中实现C语言中静态变量的功能DELPHI编程2007-09-02 14:56:01阅读28评论0  字号:大中小 订阅如何在Delphi中实现C语言中静态变量的功能 在函数(func...
  • yewenlin
  • yewenlin
  • 2011年03月07日 09:26
  • 1586

Delphi类的静态属性及方法。

Because Delphi not provide static member for our using, so if you want a static member of class in...
  • QDseashore
  • QDseashore
  • 2012年07月16日 14:44
  • 940

Delphi 静态局部变量的替换方法

以前一直以为Delphi不比C/C++没办法实现静态局部变量。今天在研究设计模式的时候突然想到,若是没有那单例模式如何实现?         没有实现不了的可能,只有不动脑不动手的人。      ...
  • yangjian900109
  • yangjian900109
  • 2016年03月30日 16:48
  • 673

Delphi 类的静态属性

Because Delphi not provide static member for our using, so if you want a static member of class in D...
  • xiangya
  • xiangya
  • 2002年02月24日 08:50
  • 1565

Delphi常用属性

常用【属性】  Action:该属性是与组件关联的行为,允许应用程序集中响应用户命令  Anchors:与组件连接的窗体的位置点  Align:确定组件的对齐方式  AutoSize:确定组件...
  • danfeng906
  • danfeng906
  • 2015年01月29日 08:55
  • 196

JAVA面向对象之静态属性和方法

在实际软件开发过程中,有的时候希望无论是否产生了对象,或是产生了多少对象,某些特定的数据在内存中只有一份,JAVA中通过static关键字来解决这个问题。 在类内使用关键字static修饰的成员变量...
  • jianggujin
  • jianggujin
  • 2015年12月23日 22:10
  • 3048

Objective-C - 动态方法、静态属性实例

设计”狗”类/* 设计一个”狗“类 1> 属性 * 颜色 * 速度(单位是m/s) * 性别 * 体重(单位是kg) 2> 行为 * 吃:每吃一次,体重增加0.5kg,输出吃完后的体重 ...
  • wangzi11322
  • wangzi11322
  • 2015年04月18日 10:38
  • 1882

Delphi组件属性

Delphi组件属性作者:邹飞E-mail:zouf.tech@ATechSoft.comHomepage:http://www.atechsoft.com/people/zouf/注:本文讨论对于D...
  • zoufeiyy
  • zoufeiyy
  • 2003年11月09日 22:55
  • 1506
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi 类的静态属性
举报原因:
原因补充:

(最多只允许输入30个字)