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
代码修改了一些,可以参考一下:
  1. l_Field = '("A" "B")
  2. x = 2
  3. y = 2
  4. foreach(item l_Field
  5.         fprintf(port "Field_%s\n" item)
  6.         fprintf(port "TLOC %d %d\n" x y)
  7.         fprintf(port "CHECKLIST %L\n" item)
  8.         fprintf(port "FSIZE 25 2\n")
  9.         fprintf(port "ENDFIELD\n\n")
  10.         y = y + 2
  11. )
复制代码

作者: 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