如何实时地获取到某个变量的改变?请各位指点明路!谢谢!

时间:2022-11-26 14:40:49
我现在想一个问题,就是:我不想使用时间控件去每一秒钟都对一个对象的某个属性或者某个变量进行检测,检测它是否有改变!例如:我有TListView这样一个控件,我不想在它的onselectItem事件里面去获取每一次选择到的item下标,我想通过某种方法来获取它的ItemIndex,让它显示在edit控件里面.如果我在onselectitem事件里面可以使用:
edit1.Text:=inttostr(TListView.ItemIndex);来实时显示当前的item,但是我不想这样!不知道有什么方法可以做到呢?例如通过指针,让edit1的text属性直接指向TListView的itemindex去做!不知道行不行!或者该怎么去做呢?

6 个解决方案

#1


呵呵
楼主不知为什么有这样的想法

除了像这样采用事件驱动机制
你还有什么更好的设计模式?

#2


如果不用时间控件,我觉得真的不好做

#3


我之所以有这个想法是因为,并不是所有属性改变都有它的事件,例如enable或者某个其它属性,我想在它改变的时候获取它的改变值!如果我要自己做控件!我是不是该知道该如何去做这个控件的事件呢?

我记得看过某本关于Java的书!有关静态变量这东西,有静态变量的类所产生的所有对象的那个静态变量都是指向同一个内存地址的,
因此,我想,是不是有什么所谓的消息或者别的通过内存指针能实现这想法呢?

#4


可以利用事件驱动,举个例子:我们在用Windows时,或点击鼠标,或敲击键盘,windows是怎么样知道这些事件怎样处理,最笨的也行不通的方法是写一个无限循环来捕捉这些事件,但我们可以反过来想,我们可以把对windows的这些操作作为驱动,来要求windows来处理;再举个实际的例子,我们把Windows(在你的问题里就是那个edit的text)比作一个城市里的邮局,它不可能每天派人跑全市去看看有没有人要寄东西,有人要寄东西就去邮局申请,然后邮局给他单子填写,完成寄东西的操作。
只是提供一种思路,从你问的问题来看,后来好象有些钻牛角尖,结合你问的简单的说,你不必时时刻刻跟踪那个变量的情况,假如它发生了变化才会引发事件,就是消息驱动事件。

#5


一般的事件足够使用了,如果不够,可以通过重写消息处理过程的方法进行。对于现在的这种事件驱动型的处理方式来说,基本上所有你能想得到的东西都能找到相应的消息。

#6


飞鱼和池龙说的很有道理!但是这个事件的驱动怎么做呢?消息又是怎么做呢?
目前我是做过自己的事件!在自己创建的内中做的,感觉效果挺好!不知道刚才的两位能否给些资料我学习学习呢?

#1


呵呵
楼主不知为什么有这样的想法

除了像这样采用事件驱动机制
你还有什么更好的设计模式?

#2


如果不用时间控件,我觉得真的不好做

#3


我之所以有这个想法是因为,并不是所有属性改变都有它的事件,例如enable或者某个其它属性,我想在它改变的时候获取它的改变值!如果我要自己做控件!我是不是该知道该如何去做这个控件的事件呢?

我记得看过某本关于Java的书!有关静态变量这东西,有静态变量的类所产生的所有对象的那个静态变量都是指向同一个内存地址的,
因此,我想,是不是有什么所谓的消息或者别的通过内存指针能实现这想法呢?

#4


可以利用事件驱动,举个例子:我们在用Windows时,或点击鼠标,或敲击键盘,windows是怎么样知道这些事件怎样处理,最笨的也行不通的方法是写一个无限循环来捕捉这些事件,但我们可以反过来想,我们可以把对windows的这些操作作为驱动,来要求windows来处理;再举个实际的例子,我们把Windows(在你的问题里就是那个edit的text)比作一个城市里的邮局,它不可能每天派人跑全市去看看有没有人要寄东西,有人要寄东西就去邮局申请,然后邮局给他单子填写,完成寄东西的操作。
只是提供一种思路,从你问的问题来看,后来好象有些钻牛角尖,结合你问的简单的说,你不必时时刻刻跟踪那个变量的情况,假如它发生了变化才会引发事件,就是消息驱动事件。

#5


一般的事件足够使用了,如果不够,可以通过重写消息处理过程的方法进行。对于现在的这种事件驱动型的处理方式来说,基本上所有你能想得到的东西都能找到相应的消息。

#6


飞鱼和池龙说的很有道理!但是这个事件的驱动怎么做呢?消息又是怎么做呢?
目前我是做过自己的事件!在自己创建的内中做的,感觉效果挺好!不知道刚才的两位能否给些资料我学习学习呢?