明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1635|回复: 7

VLISP能拖动自制的DCL对话框吗?

[复制链接]
发表于 2011-7-13 09:55 | 显示全部楼层 |阅读模式
各位大侠:
      我在DCL里有用到grdraw函数,但此函数的效果要在对话框关闭或者拖动对话框后才能显现出来。我又不想关闭对话框。
我试了手工拖动对话框grdraw函数的效果是能显示的,我想请问一下VLISP有办法来拖动这对话框吗?
或者还有其它解决办法也行

发表于 2011-7-13 10:52 | 显示全部楼层
本帖最后由 zhynt 于 2011-7-13 10:54 编辑

用这个试试看:

(new_dialog dlgname dcl_id [action [screen-pt]])
参数

dlgname

用于指定对话框的字符串。

dcl_id

由 load_dialog 获得的 DCL 文件标识符。

action

字符串,包含用作缺省操作的 AutoLISP 表达式。如果不想指定缺省操作,可以将该参数指定为空字符串 ("")。如果指定了 screen-pt 就必须指定 action 参数。

当用户拾取了某个激活的控件,而该控件没有通过 action_tile 函数或 DCL 显式指定操作或回调函数,则计算指定的缺省操作。

screen-pt

二维点表,用于指定屏幕上对话框位置的 X、Y 坐标。该点通常指定的是对话框的左上角,但它还与平台有关,其值通常用系统单位来表示。如果将该点指定为 '(-1 -1),那么打开对话框时它显示在缺省位置上(AutoCAD 的图形屏幕的中心位置)。

 楼主| 发表于 2011-7-13 11:54 | 显示全部楼层
回复 zhynt 的帖子

谢谢大师
    现在我有了一个思路对话框退出时用done_dialog记录对话框位置,再重新打开对话框指定上次记录的位置。这样就能保证对话框关闭后再打开还在同一个位置上。
只不过是比较麻烦,最终还是关闭了对话框。

再次感谢!
 楼主| 发表于 2011-7-13 12:26 | 显示全部楼层
回复 zhynt 的帖子

ZHYNT,你好。
    (new_dialog "nc1" (load_dialog "nc1") "" '(-1 -1))
我这个函数这样写对不,怎么不起作用。我用done_dialog提出坐标点代进去,也不起作用。
是不是我的写法错了。

请赐教,谢谢!
发表于 2011-7-13 14:25 | 显示全部楼层
本帖最后由 zhynt 于 2011-7-13 14:28 编辑

是有用的,这是dcl它无法在(-1 1)这个位置显示,所以就显示在默认的位置了,这个位置我是在退出对话框是得到的:(action_tile "accept" "(setq weizhi (done_dialog 6))")
在显示时:
(if        weizhi
      (new_dialog "shuoming" dia_id "" weizhi)
      (new_dialog "shuoming" dia_id)
    )
你的例子“
(new_dialog "nc1" (load_dialog "nc1") ""weizi)

 楼主| 发表于 2011-7-13 15:26 | 显示全部楼层
回复 zhynt 的帖子

搞定了,谢谢!
发表于 2011-7-13 20:01 | 显示全部楼层
dear sir,
can u provided sample code
发表于 2011-7-14 18:10 | 显示全部楼层
看不懂,对话框一点儿也不懂.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-5 03:21 , Processed in 0.195886 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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