如题我们怎么才能获取一个变量改变的事件呢?
估计这个问题很多人都想知道!因为如果真的可以的话,有很多东西都很好实现了!而不需要去做太多的东西!我想编程世界里面没有什么东西是不可能,只有你敢与不敢去想,还有就是你能不能想到而已!首先,变量是储存在一个内存块里面的,我想,不知道有没有什么函数或者东西能获取到这个内存块改变的方法呢?如果有那可就好办多了!但我感觉这个好像不那么容易实现!而我对这个问题的另外一个想法就是:说到变量!其实变量的含义不紧紧是一个数或者一个字符串那么简单!其实可以说那是一个对象!既然是对象,那么我们可以对它这个对象的类做更多的方法,或者说在原来的基础上做更多的方法!我是想为这个类改变某些东西的时候做一个方法,就像Java或者C++那样!一个对象的某个属性改变所使用的setXXX这样的语句,在这个类里面的setXXX方法去获取改变的信息,然后完成自己想完成的东西!但是Delphi好像没有这样的一种方法!还是我学不到家,根本不知道能做这些东西呢?请大伙指教一下!
估计这个问题很多人都想知道!因为如果真的可以的话,有很多东西都很好实现了!而不需要去做太多的东西!我想编程世界里面没有什么东西是不可能,只有你敢与不敢去想,还有就是你能不能想到而已!首先,变量是储存在一个内存块里面的,我想,不知道有没有什么函数或者东西能获取到这个内存块改变的方法呢?如果有那可就好办多了!但我感觉这个好像不那么容易实现!而我对这个问题的另外一个想法就是:说到变量!其实变量的含义不紧紧是一个数或者一个字符串那么简单!其实可以说那是一个对象!既然是对象,那么我们可以对它这个对象的类做更多的方法,或者说在原来的基础上做更多的方法!我是想为这个类改变某些东西的时候做一个方法,就像Java或者C++那样!一个对象的某个属性改变所使用的setXXX这样的语句,在这个类里面的setXXX方法去获取改变的信息,然后完成自己想完成的东西!但是Delphi好像没有这样的一种方法!还是我学不到家,根本不知道能做这些东西呢?请大伙指教一下!
解决方案 »
- 关于窗体的创建和释放
- 关于TStringStream的问题
- mailyxg,我第一次见到这么不要脸的人。
- 我在implementation 前面定义了一个全局变量 theSql: string
- tcxGridTableView如何手动增加一行?(不是tcxGridDBTableView!)
- 如何去掉字符串中的空格,有分送
- 怎样实现类似OICQ的那种可以点击弹动的菜单?
- 怎么办哟?
- 如果让real变量只精确到小数点后三位?比如M:=0.123456,想让M:=0.123
- 请问如何才能给pardaox数据加索引
- 请教BDE中Session和Datebase组件的作用.
- 小问题,谁能解决?设置x坐标
而且也有很多属性改变即触发事件的例子。
private
FTest: Integer;
function GetTest: Integer;
procedure SetTest(Value: Integer);
published
property DoTest: Integer read GetTest write SetTest;
end;function TTest.GetTest: Integer;
begin
Result := FTest;
end;procedure TTest.SetTest(Value: Integer);
begin
FTest := Value;
//Do some thing
end;当然像上面的例子
property DoTest: Integer read GetTest write SetTest;
一般直接写成
property DoTest: Integer read FTest write SetTest;有时候也会用
property DoTest: Integer read FTest write FTest;
begin
if FEnabled <> Value then
begin
FEnabled := Value;
Perform(CM_ENABLEDCHANGED, 0, 0);
end;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure Setenabled(value:boolean);override;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1. Setenabled(value:boolean);
begin
showmessage('can not disable');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Enabled:=false;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure Setenabled(value:boolean);override;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1. Setenabled(value:boolean);
begin
inherited;
caption:='被禁用!'
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Enabled:=false;
end;
var
test:TTest;
begin
edit1.text:=inttostr(test);
test:=strtoint(edit2.text);
end;
不知道这样是不是使用到了你的TTest呢?请指教!