明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1347|回复: 7

[求助]新学DCL的一些问题

[复制链接]
发表于 2008-7-27 10:27 | 显示全部楼层 |阅读模式
如下面的对话框驱动与对话框代码。
1、现在我需要按一下帮助才能在edit_box中显示出qdmsg,能否去掉这个操作呢?对话框显示出来时,edit_box中就显示了qdmsg,这样我用ok_cancel就可以了。
2、能否让edit_box长一点,是改它的哪个属性?
3、我定义了按取消时(setq sjbd t),可我测试时按取消再监视里看到sjbd仍为nil,这是哪里的问题?
  1. (defun jzpbqd (qdmsg / dcl_id)
  2. (if (> (setq dcl_id (load_dialog "dmhdcl.dcl")) 0)
  3.   (if (new_dialog "pbqd" dcl_id)
  4.    (progn
  5.     (action_tile "accept" "(done_dialog 1)")
  6.     (action_tile "cancle" "(notpb)")
  7.     (action_tile "help" "(pbhelp qdmsg)")
  8.     (start_dialog)
  9.     (unload_dialog dcl_id)
  10.    ) ;_ End progn
  11.    (progn
  12.     (alert "初始化对话框失败!")
  13.     (exit)
  14.    ) ;_ End progn
  15.   ) ;_ End if
  16.   (progn
  17.    (alert "加载对话框失败!")
  18.    (exit)
  19.   ) ;_ End progn
  20. ) ;_ End if
  21. (princ)
  22. ) ;_ End defun
  23. (defun notpb ()
  24. (setq sjbd t)
  25. (done_dialog)
  26. )
  27. (defun pbhelp (qdmsg /)
  28. (set_tile "pbqdmc" qdmsg (get_tile "pbqdmc"))))
  1. pbqd:dialog {
  2.     label = "是否陪绑区段" ;
  3.     spacer_1;
  4.     :edit_box {
  5.         key = "pbqdmc" ;
  6.         label = "以下区段在第5段数据中找不到" ;
  7.     }
  8.     spacer_1;
  9.     :text {
  10.         label = "按帮助显示错误信息" ;
  11.     }
  12.     spacer_1;
  13.     :text {
  14.         label = "按确定表示上述区段均为陪绑区段" ;
  15.     }
  16.     spacer_1;
  17.     :text {
  18.         label = "按取消表示上述至少有一个区段不为陪绑区段" ;
  19.     }
  20.     spacer_1;
  21.     ok_cancel_help;
  22. }
发表于 2008-7-27 10:54 | 显示全部楼层

1. 去掉帮助

1.1 (action_tile "help" "(pbhelp qdmsg)");_不用帮助的话,这句去掉

1.2 ok_cancel_help//这个改成ok_cancel;

1.3 (defun pbhelp (qdmsg /)
    (set_tile "pbqdmc" qdmsg (get_tile "pbqdmc"))));_这句错误,也拿掉

2. edit_box长度, 可补上edit_width

:edit_box {
         key = "pbqdmc" ;
         label = "以下区段在第5段数据中找不到" ;

         edit_width80 ; //够不够长...呵呵
     }
3.(action_tile "cancle" "(notpb)");_cancel才对

补充一小点defun jzpbqd (qdmsg / dcl_id)  ;_有必要用到全局变量qdmsg吗?

           你还有主程式,调用对话框jzpbqd 这个来当子程式不合适吧?

最近也在重新学习,呵呵,希望dinosaurhxe能多提些问题...

发表于 2008-7-27 11:07 | 显示全部楼层

1.你在new_dialogstart_dialog之间的过程,加一句代码set_tile "pbqdmc" qdmsg)

2.edit_box的字长可用edit_width这个属性控制

3.取消的KEY是"cancel",你拼写错了~!~

 楼主| 发表于 2008-7-27 11:23 | 显示全部楼层

感谢楼上二位的指点。特别感谢fsxm,上述DCL的代码,就是用您的ListDCLediter来写的,非常实用。

edit_box的长度原来是edit_width,我说我改了width的值,一直都没反应。另外,既然可以edit_width80  我可否像解决第一个问题一样在new_dialog与strat_dialog之间加一句代码,设置edit_width = (+ (strlen qdmsg) 5)呢?应该用什么命令?

没想到还有手误居然没发现,英语实在太烂了!

回二楼carrot1983的问题:我认为加一个全局变量没有什么不对呀?我有多处需要调用这个对话框,每次给出不同的qdmsg就可以了呀?

发表于 2008-7-27 16:00 | 显示全部楼层

(defun c:test ()
  (cmdla0)
  (setq qdmsg "按帮助显示错误信息")
  (defun xyp-help ()
    (set_tile "t1" qdmsg)
  )
  (setq Ilst '((nil nil ":column{label=\"是否陪绑区段\";")
        ("t1" "以下区段在第5段数据中找不到" "str" "24")
        ("t2" "按帮助显示错误信息" "text")
        ("t3" "按确定表示上述区段均为陪绑区段" "text")
        ("t4" "按取消表示上述至少有一个区段不为陪绑区段" "text")
        (nil nil "}")
        (nil nil "spacer;")
        (nil nil "ok")
       )
  )
  (if (= (xyp-Dcl-Init Ilst "【对话框驱动与对话框代码】" t) 1)
    (alert "\n上述区段均为陪绑区段")
  )
  (cmdla1)
)

效果:

本帖子中包含更多资源

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

x
 楼主| 发表于 2008-8-1 13:30 | 显示全部楼层

4楼的

“另外,既然可以edit_width80  我可否像解决第一个问题一样在new_dialog与strat_dialog之间加一句代码,设置edit_width = (+ (strlen qdmsg) 5)呢?应该用什么命令?”

不知道能不能解决?

发表于 2008-8-1 17:22 | 显示全部楼层

呵呵~传统DCL是不能在做好DCL后改变edit_width 属性的呢~

可以试下动态生成的DCL~

ListDCLediter输出的lsp格式,用fsxm-ldcl函数调用动态生成DCL~

 楼主| 发表于 2008-8-1 19:16 | 显示全部楼层

原来不能改变,需要动态DCL才行。我目前连DCL都不太会,动态DCL得缓缓再学了,比较笨,一下子多了就接受不过来。感谢FSXM。

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

本版积分规则

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

GMT+8, 2024-5-11 03:43 , Processed in 0.156960 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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