EDA365电子工程师网
标题:
请教各位一个FIELD操作问题?
[打印本页]
作者:
yneda
时间:
2013-5-21 15:43
标题:
请教各位一个FIELD操作问题?
本帖最后由 yneda 于 2013-5-21 15:45 编辑
通常某个FIELD的值可以从以下代码获得,
case(form->curField
("Field_A"
Field_A = form->curValue
)
("Field_B"
Field_B = form->curValue
)
)
如下代码,假如这个 FIELD是动态生成的呢,又是如何获得它的值呢,我常试做一个循环插入到Case里去,但点击输出不了值,求高手指点下,非常感谢!
l_Field = '("A" "B")
x = 2
y = 2
foreach(item l_Field
fprintf(port sprintf(nil "Field_%s\n" item))
fprintf(port sprintf(nil "TLOC %d %d" x y))
fprintf(port sprintf(nil "CHECKLIST %s%s%s\n" "\"" item "\""))
fprintf(port "FSIZE 25 2\n")
fprintf(port "ENDFIELD\n\n")
y = y + 2
)
;;
作者:
betamelody
时间:
2013-5-21 16:01
定义form的时候就把所有的动态生成field归集到一个list中,随form传值到回调函数中
fieldlist = list("1" "2" "3" "4" "5")
form->fieldlist = fieldlist
回调函数中
cond(
(member(form->curField form->fieldlist)
do something
)
)
作者:
deargds
时间:
2013-5-21 16:05
代码修改了一些,可以参考一下:
l_Field = '("A" "B")
x = 2
y = 2
foreach(item l_Field
fprintf(port "Field_%s\n" item)
fprintf(port "TLOC %d %d\n" x y)
fprintf(port "CHECKLIST %L\n" item)
fprintf(port "FSIZE 25 2\n")
fprintf(port "ENDFIELD\n\n")
y = y + 2
)
复制代码
作者:
yneda
时间:
2013-5-21 17:23
非常感谢两位版主的指点,问题已解决。
我查看了下form->??,动态生成的Field已在里面,form->fields可以导出所有的Field列表,根据你的指点,稍微修改了下,我在16.3版本调试可行。
cond(
( member(form->curField form->fields)
println("Test!")
)
)
谢谢!受教了。
作者:
yneda
时间:
2013-5-22 08:53
昨天下班回去的路上一想,我这样修改会有问题, 一是member查找的范围太大了,另 do something还要做一些约束,要不,"Field_A"和"Field_B"做的是同样一件事情。
作者:
betamelody
时间:
2013-5-22 09:12
搞清楚需求,然后去language help看一下cond的说明,上面的回复中是不用全局变量用form结构传值的例子
作者:
deargds
时间:
2013-5-22 20:54
yneda 发表于 2013-5-22 08:53
昨天下班回去的路上一想,我这样修改会有问题, 一是member查找的范围太大了,另 do something还要做一些约 ...
动态生成的FIELD,一般都加一些特殊的索引字段,在回调函数中根据你自己实际的需求来进行过滤条件判断转向。
欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/)
Powered by Discuz! X3.2