xiaoquansb 发表于 2014-3-18 19:50:50

求助,关于done_dialog


我做了一个有二级对话框的程序,但是出现了一个很奇怪的情况,每次当第一个对话框(工程信息)执行个n次后
第二个对话框(材料清单)点击按钮(非确认取消按钮)执行操作,这时候操作能顺利执行,
但done_dialog却好像被忽略掉似的,得操作n次才能关闭,初步怀疑跟done_dialog后面的参数有关系,
但始终百思不得其解,请问各位有没有遇到类似的相关经验,希望能不吝赐教,感激不尽。

自贡黄明儒 发表于 2014-3-18 20:35:04

代码贴上来,别人才好诊断。

xiaoquansb 发表于 2014-3-18 22:39:03

D:\Program Files\Materials解压到这个目录下,主程序命令tts

自贡黄明儒 发表于 2014-3-19 08:42:40

(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)不断产生对话框?

xiaoquansb 发表于 2014-3-20 12:17:03

while里的 (start_dialog)对应的(done_dialog)其实是程序结尾的那个 或者点击按钮“图纸目录”按钮执行的(PM_Command1)里面的(done_dialog),"工程信息"里的new_dialog 和unload_dialog都对应只有1个,不参与循环,按道理应该没什么问题,(done_dialog)的1,0,-1三个参数我都试遍了,(term_dialog)也试了,均无法避免那个问题,函数说明似乎也没给出太多的有用信息

xiaoquansb 发表于 2014-3-23 17:11:31

问题很莫名其妙地解决了,只要把button2的执行程序挂到button1就不会出现不良反映了,而且只能连接到button1,其他的都不行,至于原因任然搞不清楚
页: [1]
查看完整版本: 求助,关于done_dialog