明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1819|回复: 4

请问如何启动对话框中的按钮?

[复制链接]
发表于 2004-6-8 17:47:00 | 显示全部楼层 |阅读模式
在程序设计中,设计了一个“浏览”按钮项以选则一个新文件,但在实际应用中点取该命令时总没有反应。
发表于 2004-6-8 18:08:00 | 显示全部楼层
晕,那就是你程序的问题了。 --------------------------------------- 帮助文件;;; 为某一对话框控件指定一个动作表达式,用户在对话框中选中这个控件时,就会执行该动作表达式
(action_tile key action-expression) 由 action_tile 函数指定的动作将取代对话框的缺省动作,缺省动作是由 new_dialog 函数指定或该控件的 action 属性(在指定了这些属性的情况下)。该动作表达式可以通过变量 $value 引用控件的当前值(即它的 value 属性),通过变量 $key 引用控件的关键字,通过变量 $data 引用控件的特定应用数据(假如需要这样的数据,可以由函数 client_data_tile 设置),通过变量 $reason 引用控件的回调原因。如果该控件是图像按钮的话,还可以通过变量 $x 和 $y 引用控件的图像坐标。 参数 key 要触发动作的控件的操作名字符串(由控件的 key 属性指定),它是区分大小写的。 action-expression 指定选定控件时所要求值的动作表达式的字符串。 注意 在 action_tile 函数中不能调用 AutoLISP 的 Command 函数。 返回值 T 样例 如果 edit1 是一个文本框,则当用户退出文本框时将对下述 action_tile 函数调用中的动作表达式进行求值: (action_tile "edit1" "(setq ns $value)") 请参见 Visual LISP 开发人员手册中的缺省值与 DCL 动作。
 楼主| 发表于 2004-6-9 13:39:00 | 显示全部楼层
本帖最后由 作者 于 2004-6-9 14:06:09 编辑

发贴心情
谢谢你!其实,我的程序已经编号,但为把输入输出做的好用一些,增加了文件存取对话框,但怎么试都不行。请帮忙看看程序吧!谢谢 (setq dcl_id (load_dialog "qx6.dcl"))
(if (not (new_dialog "qx6" dcl_id)) (exit)) (set_tile "fi" "")
(set_tile "zh" "0")
(set_tile "zhju" "200")
(set_tile "fi2" "SEGMENT")
(mode_tile "fi" 2) (action_tile "accept" "(ok)")
(start_dialog )
(done_dialog)
(action_tile "filein" (getfiled "select a lisp file" "/cass40/bin/" "lsp" 5))
(action_tile "fileout" (princ "输出")) (unload_dialog dcl_id) ======以下是dcl ================== qx6:dialog{
label = "圆曲线元素计算";
:row {
:edit_box{
label = "转点文件名";
mneonic = "N";
key = "fi";
edit_width =10;
}
:button{
label = "浏览";
key = "filein";
width = 1;
height = 1;
mnemonic= "B";
}
}
:edit_box{
label = "起始点桩号";
mneonic = "N";
key = "zh";
edit_width =20;
}
:edit_box{
label = "桩 距";
mneonic = "N";
key = "zhju";
edit_width =20;
}
:row {
:edit_box{
label = "成果文件名";
key = "fi2";
edit_width =10;
}
:button{
label = "浏览";
key = "fileout";
width = 1;
height = 1;
mnemonic= "B";
}
} spacer_1;
ok_cancel_err;
}
程序调入后,当点"filein" or "fileout" 钮时,没反应,但当点取“取消”或“确定”钮才出现想要的文件选取对话框.
发表于 2004-6-9 14:30:00 | 显示全部楼层
好好看看我改的,,,,你的程序顺序上很乱,错误很多,一定要看仔细了,一句话,一个符号都不要放过(由于不知道你的ok函数是什么内容,我把(action_tile "accept" ...)屏蔽了——另,注意,getfiled只是返回选择的文件名(包括路径),并不会做其它任何事情,要保存,你须你自己来做,所以你的这个动作应该说是没有任何作用的。。。建议你一点一点地搞懂这些内容,不要老想着一下子都搞懂了
  1.          (setq dcl_id (load_dialog "qx6.dcl"))
  2.          (if (not (new_dialog "qx6" dcl_id)) (exit))
  3.          (set_tile "fi" "")
  4.          (set_tile "zh" "0")
  5.          (set_tile "zhju" "200")
  6.          (set_tile "fi2" "SEGMENT")
  7.          (mode_tile "fi" 2)
  8. (action_tile "filein" "(getfiled "select a lisp file" "/cass40/bin/" "lsp" 5)")
  9. (action_tile "fileout" "(princ "输出")")
  10.          ;(action_tile "accept" "(ok)")
  11.          (start_dialog )
  12.          (unload_dialog dcl_id)
 楼主| 发表于 2004-6-10 14:26:00 | 显示全部楼层
多谢指教!主要是我引用的函数太长了,又没加引号,把它定义成一个子程序就ok了。谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 10:40 , Processed in 0.169183 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表