李几天前告诉我的!最终,希望它能一直留在我的脑海里! 观察力好,李!谢谢您的更正。 您好,
我为2个单选按钮编写了尽可能小的代码,需要在隐藏对话框之前用以前的数据重新填充到表单中。
我还养成了在dcl键上加下划线的习惯。
请。欢迎对其他方法提出建议。。。
(action_tile "_rb1" "(setq RB2 nil)")
(action_tile "_rb2" "(setq RB2 T)")
(if RB2
(set_tile "_rb2" "1")
(set_tile "_rb1" "1") ; this makes _rb1 default to!
)
如果在这里似乎正确,但我认为条件函数对于3个以上的单选按钮更好。 在我的程序中,我倾向于使用DCL键作为单选按钮的存储值,因为单选按钮是作为单个分幅控制的。
例如:
(set_tile key "1")
(foreach key '("radio_key1" "radio_key2" ... "radio_keyN")
(action_tile key "(setq key $key)")
)
我不明白,李。我已经把你的代码读了好几遍了,但还是不能理解。很抱歉,我无法准确理解您的代码中发生了什么? 我认为该准则实际上应该是:
(foreach key '("radio_key1" "radio_key2" ... "radio_keyN")
(action_tile key (strcat "(setq " key "$key)"))
)
该代码摘录在运行时定义了与某些对话框互动程序相关的操作。
正如上文所述,@Lee利用的是这样一个事实,ACTION\u TILE函数需要一个字符串作为第二个参数。因此,他解析了一个字符串列表,即平铺键,并使用同一个字符串构建了一个属性语句,该属性语句定义了一个与键名匹配的变量,该变量接收所述键的值。
对不起,对于键变量为null的情况,我忽略了初始if表达式:
这里,键符号存储当前活动的radio_磁贴的键属性。因此,当第一次显示对话框时,符号键没有初始值(因为它将在调用函数中定位),并且被任意设置为第一个无线电磁贴的键:“radio\u key1”
然后,其键由可变键存储的radio_磁贴被设置为活动。
在foreach循环中,为每个radio\u tile设置action\u tile表达式。
因此,对于平铺键列表中的每个radio\u平铺键:'(“radio\u key1”“radio\u key2”…“radio\u keyN”),为键计算action\u平铺表达式:
5完整编写(没有foreach循环),这些action\u tile表达式将是:
请注意,符号$key是一个预定义的动作表达式变量(与$value/$reason/$data一起),它存储触发动作瓦表达式计算的瓦的键属性。
因此,在每个action\u tile表达式中,变量key被设置为用户选择的radio\u tile的key属性。
如果随后在循环构造内使用done\u dialog/new\u dialog调用抑制对话框,则键符号的字符串值用于在重新显示对话框时将正确的radio\u磁贴设置为活动。
不,最初的action_tile表达是我的本意,但谢谢你对Mircea的兴趣。
页:
1
[2]