求助,关于done_dialog
我做了一个有二级对话框的程序,但是出现了一个很奇怪的情况,每次当第一个对话框(工程信息)执行个n次后
第二个对话框(材料清单)点击按钮(非确认取消按钮)执行操作,这时候操作能顺利执行,
但done_dialog却好像被忽略掉似的,得操作n次才能关闭,初步怀疑跟done_dialog后面的参数有关系,
但始终百思不得其解,请问各位有没有遇到类似的相关经验,希望能不吝赐教,感激不尽。 代码贴上来,别人才好诊断。 D:\Program Files\Materials解压到这个目录下,主程序命令tts
(defun 工程信息 ()
(setvar "cmdecho" 0)
(setq PM_dcl_id (load_dialog "工程信息" ));加载对话框
(if (not (new_dialog "工程信息" PM_dcl_id))
(progn (alert "不能装入对话框" ) (exit))
);end if
(PM_getvar);从内存获取之前设定过的变量值
(action_tile "accept" "(PM_setvar)" );确认按钮,执行(PM_setvar)
(action_tile "PM_Command1" "(PM_Command1)" );按钮(图纸目录),执行(PM_Command1)
(action_tile "PM_Check1" "(make_dirs)" );勾选栏,执行(make_dirs)
(setq 指定目录 nil new_PM_path nil)
(start_dialog);启动对话框
(while 指定目录
(setq new_PM_path (qf_getFolder "选择文件夹:" ))
(new_dialog "工程信息" PM_dcl_id)
(PM_getvar);从内存获取之前设定过的变量值
(action_tile "accept" "(PM_setvar)" );确认按钮,执行(PM_setvar)
(action_tile "PM_Command1" "(PM_Command1)" );按钮(图纸目录),执行(PM_Command1)
(action_tile "PM_Check1" "(make_dirs)" );勾选栏,执行(make_dirs
(setq 指定目录 nil)
(start_dialog);;选择目录后返回工程信息对话框
);end while
(done_dialog)
(unload_dialog PM_dcl_id);卸载对话框
(setvar "cmdecho" 1)
(C:TTS)
(princ)
)
;;看上面一段,好象有些问题
通常(action_tile "accept" "(PM_setvar)" );这名对话框消失,但些时没有卸载。这句一般是这样写的(action_tile "accept" "(done_dialog 1)"),这个参数1就传递给了PM_dcl_id,根据PM_dcl_id的值为1,说明是击的确定按钮,执行...
你在while中,(start_dialog)不断产生对话框?
while里的 (start_dialog)对应的(done_dialog)其实是程序结尾的那个 或者点击按钮“图纸目录”按钮执行的(PM_Command1)里面的(done_dialog),"工程信息"里的new_dialog 和unload_dialog都对应只有1个,不参与循环,按道理应该没什么问题,(done_dialog)的1,0,-1三个参数我都试遍了,(term_dialog)也试了,均无法避免那个问题,函数说明似乎也没给出太多的有用信息 问题很莫名其妙地解决了,只要把button2的执行程序挂到button1就不会出现不良反映了,而且只能连接到button1,其他的都不行,至于原因任然搞不清楚
页:
[1]