Tharwat 发表于 2022-7-6 08:02:20

激活并显示弹出菜单l

你好
 
有没有关于在选中切换框时如何激活和停用弹出列表的示例?
 
类似于绘图对话框中的内容。(当选中切换“适合纸张”时,“缩放”弹出列表将被停用,反之亦然。

Lee Mac 发表于 2022-7-6 08:09:15

如果您指的是标准DCL:在切换互动程序的action\u tile语句中,使用作用于popup\u list互动程序的mode\u互动程序表达式。

pBe 发表于 2022-7-6 08:16:47

示例:
(defun c:test ( / sampdcl val)
(setq sampdcl (load_dialog "plotsample.dcl"))
(if (not (new_dialog "plotsample" sampdcl))
(exit)
)
(start_list "lst")(mapcar 'add_list '("1:10" "1:20" "1:50"))(end_list)
(start_list "UNIT:")(mapcar 'add_list '("mm" "inches"))(end_list)
(action_tile "FTP"
   "(setq val $value)(mode_tile \"lst\" (boole 1 (atoi val)))
      (mode_tile \"UNIT:\" (boole 1 (atoi val)))")
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel""(done_dialog 0)" )
(start_dialog)
(unload_dialog sampdcl)
   )
 
plotsample : dialog {
label = "Try me....";
: boxed_column {
: toggle { label = "F&it to paper"; key = "FTP"; }
: popup_list { label = "&Scale:"; key = "lst"; width = 25; }
: popup_list { key = "UNIT:";
alignment = right;
width = 10;
fixed_width = true;}
}
ok_cancel ;
}

Tharwat 发表于 2022-7-6 08:28:21

谢谢李提供的信息。
 
感谢pBe提供的完美示例,它非常有效。
 
如果从弹出列表中选择一个特定的项目,我们能有同样的技巧吗?
 
非常感谢你

pBe 发表于 2022-7-6 08:29:58

这与塔尔瓦特的做法相同。
前任。

(setq lst_ '("mm" "inches"))
(action_tile "LstKey"
(vl-prin1-to-string (quote
(progn                        
(setq val2 (nth (atoi (get_tile $key)) lst_))
(mode_tile "key" (if (member val2 '("mm" "cm" "m")) 1 0))
)
)
)

 
我相信你会明白这段话是怎么回事。
 
顺便说一句:前面的代码并不是一个完美的例子,而是实现它的许多方法之一。
 
给,我给你测试了一下

(defun c:test ( / sampdcl val)
(setq lst_ '("1:10" "1:20" "1:50" "1:60"))      
(setq sampdcl (load_dialog "plotsample.dcl"))
(if (not (new_dialog "plotsample" sampdcl))
(exit)
)
(start_list "lst")(mapcar 'add_list lst_)(end_list)
(start_list "UNIT:")(mapcar 'add_list '("mm" "inches"))(end_list)
(action_tile "FTP"
   "(setq val $value)(mode_tile \"lst\" (boole 1 (atoi val)))
      (mode_tile \"UNIT:\" (boole 1 (atoi val)))")
(action_tile "lst"
(vl-prin1-to-string (quote
(progn                        
(setq val2 (nth (atoi (get_tile $key)) lst_))
(mode_tile "UNIT:" (if (member val2 '("1:20" "1:60")) 1 0))
    )))
      )      
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel""(done_dialog 0)" )
(start_dialog)
(unload_dialog sampdcl)
   )

Tharwat 发表于 2022-7-6 08:36:19

这确实是一项非常伟大的工作,你为我做了这一切真是太好了。
 
我必须玩一点,以满足我的需要。
 
非常感谢你。

pBe 发表于 2022-7-6 08:44:34

 
不客气,塔瓦
很高兴你发现这些例子很有用。
 
干杯

Tharwat 发表于 2022-7-6 08:53:53

你好,pBe。
 
你注意到在Vlisp中检查代码时它抛出了一个错误吗?这正常吗?
 

pBe 发表于 2022-7-6 09:01:14

 
我真的不知道什么是“正常”。
Anyhoo如果在布尔函数行上添加另一个参数,则错误消息将消失。

(action_tile "FTP"
   "(setq val $value)(mode_tile \"lst\" (boole 1 1 (atoi val)))
      (mode_tile \"UNIT:\" (boole 1 1 (atoi val)))")

 
想想看,帮助文件确实说
直到现在我才注意到。很好,塔瓦特。
 
干杯

Tharwat 发表于 2022-7-6 09:06:47

 
确切地发生了什么事并解决了它。
 
谢谢。
页: [1]
查看完整版本: 激活并显示弹出菜单l