以下是引用hfdq在2016-4-27 22:05:26的发言:
参数传递的目的是为了按输入的时间来将另一个表单内的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.出货时间
*表单1 参数传递的目的是为了按输入的时间来将另一个表单内的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.出货时间
*在text1里输入 日期
local cp
cp=thisform.text1.value
*这里,你要保证你的 cp 是什么类型的,是日期?为了安全,你可以这样做
if type("cp")<>"D"
messagebox("参数错误,不是日期",16,"错误")
else
do form 未发货 with cp
endif
*怎么保证 thisform.text1.value 输入的是合法的日期呢?其实最好是把Text1设置为字符,不要设置为日期,然后通过函数转换CTOD()
*先初始化 Text1 为字符,在 Text1.init上写上
this.value=""
*设置 Text1 的输入格式 InputMask = 9999/99/99 ,这样 Text1 就只能输入数字
*然后转换
cp=ctod(thisform.text1.value)
if empty(cp)
messagebox("日期输入错误",16,"错误")
return
endif
*经过这样后,就能保证你 cp这个值一定是有效的日期了。
*上面的代码就修改为:
************************************************
*表单1
*在text1里输入 日期
local cp
cp=ctod(thisform.text1.value )
if empty(cp)
messagebox("参数错误,不是日期",16,"错误")
return
endif
do form 未发货 with cp
“为发货”表单内的init 代码如下
Lparameters lctr
if empty(lctr) or type("lctr")<>"D" &&参数为空,或者参数的类型不是日期
this.text1.value={} &&设置为 空的日期,此时,这里的 Text1 是日期型
else
this.text1.value=lctr
endif
*把 grid.init全部移动到 form.init 上
local dtime
dtime=thisform.text1.value
if empty(dtime)
thisform.text2.value="空"
else
thisform.text2.value="有日期"
endif
thisform.grid1.SetAll("DynamicBackColor", "IIF(detail.出货时间=dtime, RGB(0,0,255), IIF(detail.出货时间<dtime, RGB(255,0,0),RGB(255,255,255)))", "Column")