找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1511|回复: 17

[求助] 如何关闭非模态对话框????

[复制链接]
发表于 2017-2-6 11:22:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在一个图中打开了非模态对话框,在同一个CAD环境下又打开了别一个图,此时在后打的图中点击非模态对话框的按钮肯定是不好使的,对话框中的“X”关闭按钮也不接收指令,可不应回到原图中再关闭吧,如何解决?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-2-6 11:27:50 | 显示全部楼层
对话框程序是基于文档的,你另外一个新打开的文档没有加载你的LISP,你可以加载LISP的时候加载到所有文档,然后用反应器判断文档是否切换,切换后,在执行下对话框的哪个命令。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2017-2-6 11:29:09 | 显示全部楼层
可以关掉的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-2-6 11:34:02 | 显示全部楼层
你点 非模式对话框上面的X,能关闭。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-6 12:12:12 | 显示全部楼层
非模式对话框上面的X 我是自已制作的按钮控件,主要是为了去掉对话框的边线,我在cadXXX.lsp 中已加载了关闭子程序,但非模态对话框是在一个特定图中加载的,所有不知所以,能具体说一下反映器吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-2-6 12:29:06 | 显示全部楼层

你没×, 保持焦点后,按ESC也可以关闭的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-6 12:43:33 | 显示全部楼层
ESC是可以,但我本来就制作了一个“X”控件,还是想办法能否从"X"中解决。
突然想起以前还有个没解决的问题,就是在编辑框输入完数据后按回车,对话框就关闭了,这是我不想要的,如何解决?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2017-2-6 13:02:48 来自手机 | 显示全部楼层
挚友01 发表于 2017-2-6 12:43

x 定义clicked事件为close
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-2-6 13:19:43 | 显示全部楼层
本帖最后由 newer 于 2017-2-6 13:21 编辑

加载论坛置顶推荐的ARXDBG工具,打开监视反应器,然后你执行OPEN,NEW命令,看看都捕获到了哪些事件


从上面演示看,你可以自己写编辑器反应器,监视 :vlr-commandWillStart, 如果是OPEN,NEW命令要执行,你就关闭当前打开的非模式对话框。


vlr-editor-reactor

构造编辑器反应器对象
(vlr-editor-reactor data callbacks)
参数
data
任何要与反应器对象相关联的 AutoLISP 数据。如果没有数据则为 nil。
callbacks
表,其中包含下列格式的点对:
(event-name . callback_function)
在这里,event-name 是下表“编辑器反应器事件”中的符号之一,callback_function 为符号,代表事件发生时要调用的函数。每个回调函数都接受如下两个参数:
reactor_object 调用回调函数的 VLR 对象
list 与特定事件相关联的其他数据元素。该表针对特定事件的内容见表“编辑器反应器回调数据”。
返回值
reactor_object 参数。
[td]
编辑器反应器事件
事件名称
说明
:vlr-beginClose

图形数据库即将关闭。

:vlr-beginDxfIn

DXF 文件的内容将被附加到图形数据库。

:vlr-abortDxfIn

DXF 输入未成功。

:vlr-dxfInComplete

DXF 输入成功。

:vlr-beginDxfOut

AutoCAD 将要把图形数据库输出到 DXF 文件。

:vlr-abortDxfOut

DXF 输出操作失败。

:vlr-dxfOutComplete

DXF 输出操作成功。

:vlr-databaseToBeDestroyed

将从内存中删除图形数据库的内容。

:vlr-unknownCommand

发出 AutoCAD 未知命令。

:vlr-commandWillStart

已调用 AutoCAD 命令。

vlr-commandEnded

已完成 AutoCAD 命令。

:vlr-commandCancelled

已取消 AutoCAD 命令。

:vlr-commandFailed

无法完成 AutoCAD 命令。

:vlr-lispWillStart

将要对 AutoLISP 表达式进行求值。

:vlr-lispEnded

已完成对 AutoLISP 表达式的求值。

:vlr-lispCancelled

已取消对 AutoLISP 表达式的求值。

:vlr-beginDwgOpen

AutoCAD 即将打开图形文件。

:vlr-endDwgOpen

AutoCAD 已结束打开操作。

:vlr-dwgFileOpened

新图形已被加载到 AutoCAD 图形窗口。

:vlr-beginSave

AutoCAD 即将保存图形文件。

:vlr-saveComplete

AutoCAD 已将当前图形保存到磁盘。

:vlr-sysVarWillChange

AutoCAD 即将修改系统变量的值。

:vlr-sysVarChanged

已修改系统变量的值。




论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-6 14:04:36 | 显示全部楼层
反映器功能这么强大,要好好学习学习。。。
原来我是在CADXXXX.lsp 加载了关闭子程序,可是不行...
(defun c:dl_DHK_Form1_GraphicButton3_OnClicked (/)
(dcl_Form_Close dl_DHK_Form1 1)
(dcl_Project_Unload "dl_DHK")
;右上角的 x 关闭按钮失效
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2017-2-6 14:48:46 | 显示全部楼层

Return as tab property
If this property is set and the user presses [Enter] while the control has the keyboard focus, the [Enter] is interpreted as though it was [Tab].
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2017-2-6 15:05:07 | 显示全部楼层


ODCL的控件事件的驱动是 Autolisp,而Autolisp是 SDI 模式,非模态对话框时要注意,加载 Lisp 时用 vl-load-all,不要简单的 load,否则其它窗口肯定无法执行动作代码的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-2-6 15:54:29 | 显示全部楼层

那你要把你的ODCL文件传上来,回调事件是在ODCL里面定义的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-6 16:22:19 | 显示全部楼层
我在主程序一般是这样写的
(vl-load-com)
(if (null (vl-symbol-value 'dcl_getversionex))  (loadRtime))
(if (not (setq project-path (dcl_Project_Load "cz_kg.odcl" T)))
    (progn ;项目无法加载,报告或记录错误
       (alert (strcat "* * * 在CAD搜索目录中未找到[" cz_kg.odcl "]文件!"))
       (exit) ;立即退出 (或采取纠正动作并重试)
    )   
    (progn
      (setq intResult2017 (dcl_FORM_SHOW cz_kg_form1))
) )        
)
(defun c:cz_kg_Form1_OnInitialize....


在CADXXXX.lsp 自动加载了关闭子程序,可是不行...
(defun c:dl_DHK_Form1_GraphicButton3_OnClicked (/)
(dcl_Form_Close dl_DHK_Form1 1)
(dcl_Project_Unload "dl_DHK")
;右上角的 x 关闭按钮失效
)
我选慢慢想想,还没想太明白...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-6 16:23:31 | 显示全部楼层
这是原程序.......

TX-BL-P.odcl

1.84 KB, 下载次数: 1, 下载积分: D豆 -1 , 活跃度 1

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 20:31 , Processed in 0.247251 second(s), 66 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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