以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 全局变量的值为什么不能即时更新?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1127)

--  作者:wcs
--  发布时间:2008/11/13 23:48:00
--  [求助] 全局变量的值为什么不能即时更新?

我在项目属性的 afteropenproject 事件中设置这几个全局变量

Vars.Add("开始日期",GetType(Date),today)

vars.Add("kn",GetType(Integer))
vars.Add("ky",GetType(Integer))
vars.Add("kr",GetType(Integer))
vars("kn") = vars("开始日期").year
vars("ky") = vars("开始日期").month
vars("kr") = vars("开始日期").day

在某窗口的日期输入框中绑定 vars("开始日期"),以便于在命令按键中引用这个全局变量

结果发现,在窗口中输入的新值没有被  kr  引用并更新

我在 杂项--命令窗口用output.show(vars("kr"))测试了一下,窗口中新输入的值不能被  kr  引用并更新!

不知大家发现这个问题没有?

[此贴子已经被作者于2008-11-13 23:57:50编辑过]

--  作者:程兴刚
--  发布时间:2008/11/14 1:09:00
--  

发现了,您自己的问题!

Vars.Add("开始日期",GetType(Date),today)
vars.Add("kn",GetType(Integer),vars("开始日期").year)
vars.Add("ky",GetType(Integer),vars("开始日期").month)
vars.Add("kr",GetType(Integer), vars("开始日期").day)


--  作者:程兴刚
--  发布时间:2008/11/14 1:12:00
--  
您这样做,不但变量kr没有值,kn、ky依然如此!
--  作者:wcs
--  发布时间:2008/11/14 10:19:00
--  
vars.Add("kn",GetType(Integer),vars("开始日期").year)


这样做只是确认默认的值,不是赋值。

vars("kn") = vars("开始日期").year

这样才是赋值。

这个的根本问题是窗口日期输入框不能赋值给全局变量的问题,我在今天的一个贴子里提出来了。
--  作者:程兴刚
--  发布时间:2008/11/14 13:20:00
--  
那是您没有把窗口的值赋给全局变量“开始日期”,输出的应该是系统日期today的日期!

      在输入时间的日期框的内容改变那一个事件设置代码,将窗口中的值赋值给全局变量“开始日期”,否则,始终是刚刚打开的时候项目属性中的事件代码起了作用,在这里出现了代码执行过程链断开,全局变量“开始日期”的值没有得到更新的缘故,不应该是狐表的问题!
[此贴子已经被作者于2008-11-14 13:34:19编辑过]

--  作者:wcs
--  发布时间:2008/11/14 14:11:00
--  

我试了,加入ylm 建议的事件代码,就正常了。