标题:表单参数传递的优先级问题
只看楼主
hfdq
Rank: 2
等 级:论坛游民
帖 子:58
专家分:20
注 册:2012-1-15
结帖率:50%
已结贴  问题点数:20 回复次数:20 
表单参数传递的优先级问题
参数传递的目的是为了按输入的时间来将另一个表单内的grid里的数据按颜色进行区分
时间小于输入的时间显示为红色
等于这个时间显示为蓝色
其他白色

表单1
在text1里输入 日期
local cp
cp=thisform.text1.value
do form 未发货 with cp


“为发货”表单内的init 代码如下
Lparameters lctr
    this.text1.value=lctr


grid的init代码

local dtime
dtime=thisform.text1.value

if empty(dtime)
    thisform.text2.value="空"
else
    thisform.text2.value="有日期"
endif

this.SetAll("DynamicBackColor", "IIF(detail.出货时间=dtime, RGB(0,0,255), IIF(detail.出货时间<dtime, RGB(255,0,0),RGB(255,255,255)))", "Column")


运行后,永远得到的是空,
但是如果你在表单内增加一个按钮,加入同样的代码,则显示为“有日期”
比较奇怪,是否表单的init的优先级要低于grid的优先级?

然后改怎么处理呢?

[此贴子已经被作者于2016-4-27 22:06编辑过]

搜索更多相关主题的帖子: local 优先级 
2016-04-27 22:05
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:5 
grid 的 init事件比 form的 init事件先运行。
你把 grid 的init事件,全都放在 form init中去看看
2016-04-27 22:28
jyxfp
Rank: 2
等 级:论坛游民
帖 子:23
专家分:81
注 册:2013-2-9
得分:5 
运行表单时,参数是传递给表单的Init事件
而表单的Init事件比表单内的所有控件的Init事件晚
2016-04-28 08:49
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
得分:5 
尝试多一个refresh

2016-04-28 09:00
hfdq
Rank: 2
等 级:论坛游民
帖 子:58
专家分:20
注 册:2012-1-15
得分:0 
以下是引用mywisdom88在2016-4-27 22:28:02的发言:

grid 的 init事件比 form的 init事件先运行。
你把 grid 的init事件,全都放在 form init中去看看


this.SetAll("DynamicBackColor", "IIF(detail.出货时间=dtime, RGB(0,0,255), IIF(detail.出货时间<dtime, RGB(255,0,0),RGB(255,255,255)))", "Column")
这句话不能用在form init里面
2016-04-28 16:07
hfdq
Rank: 2
等 级:论坛游民
帖 子:58
专家分:20
注 册:2012-1-15
得分:0 
以下是引用baichuan在2016-4-28 09:00:47的发言:

尝试多一个refresh

不明白
什么意思?
2016-04-28 16:38
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:5 
以下是引用hfdq在2016-4-28 16:07:40的发言:

 
 
this.SetAll("DynamicBackColor", "IIF(detail.出货时间=dtime, RGB(0,0,255), IIF(detail.出货时间
试了一下,可以放
2016-04-28 16:42
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用hfdq在2016-4-28 16:07:40的发言:



this.SetAll("DynamicBackColor", "IIF(detail.出货时间=dtime, RGB(0,0,255), IIF(detail.出货时间<dtime, RGB(255,0,0),RGB(255,255,255)))", "Column")
这句话不能用在form init里面


thisform.grid1.SetAll("DynamicBackColor", "IIF(detail.出货时间=dtime, RGB(0,0,255), IIF(detail.出货时间<dtime, RGB(255,0,0),RGB(255,255,255)))", "Column")
他本来在GRID1上的,你移动到form去,就要把THIS换为 thisform.grid1

[此贴子已经被作者于2016-4-28 17:19编辑过]

2016-04-28 17:18
hfdq
Rank: 2
等 级:论坛游民
帖 子:58
专家分:20
注 册:2012-1-15
得分:0 
回复 8楼 mywisdom88
form init
代码:
Lparameters lctr
    this.text1.value=lctr
local dtime
dtime=thisform.text1.value   

    thisform.grid1.SetAll("DynamicBackColor", "IIF(detail.出货时间=dtime, RGB(0,0,255), IIF(detail.出货时间<dtime, RGB(255,0,0),RGB(255,255,255)))", "Column")

好像隐隐约约感觉会不会传递的参数的变量类型不同造成的?
出现的问题如图



还有一个问题,对于日期型的参数传递
我有些不太了解
输出的时候要定义类型决定它的类型
还是接收的时候定义类型它会改变
这里很模糊


[此贴子已经被作者于2016-4-30 13:42编辑过]

2016-04-30 13:38
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
回复 9楼 hfdq
*我在表单的 form init 中,可以运行这个代码,表明是没问题的。
*如果你那里有问题,可能出在你的表达式上 IIF(),你可以这样测试
qh='龙岗'
*qh='罗湖'
*分别用上面的固定值来测试,如果不报错,就是你用的表达式有问题。
this.grid1.RecordSourceType = 1
this.grid1.RecordSource =ALIAS()
thisform.grid1.SetAll("DynamicBackColor", "IIF(qh='龙岗', RGB(0,0,255), IIF(qh='罗湖', RGB(255,0,0),RGB(255,255,255)))", "Column")

*如果你同样的语句在 grid init上可以使用,移到 form init 上就不能用,你就要看
*你在表单的 init 上查看 数据看看
brow
看看能不能看到数据,
2016-04-30 20:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-464201-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.690708 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved