找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 521|回复: 3

[求助] [求助]:如何隐藏对话框?

[复制链接]
发表于 2006-5-12 22:53:01 | 显示全部楼层 |阅读模式

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

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

×
请教各位大侠:如何用lisp程序实现隐藏对话框,能否给出一个通用的lisp函数程序格式?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 488个

财富等级: 日进斗金

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

使用道具 举报

 楼主| 发表于 2006-5-14 21:51:05 | 显示全部楼层
我知道用done_dialog,但不知道如何编写这种程序代码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-17 13:04:22 | 显示全部楼层
也不知你说的"隐藏"具体何指.这编的这个程序你看看能不能有点帮助
;;;--------------------------------------------------------
;;;函数: c:lookat
;;;--------------------------------------------------------
;;;来源:            作者: 何俊
;;;编制时间:2006.5.16
;;;功能:     统计用记选择的多段线的总长度
;;;语法:     lookat
;;;参数      无
;;;返回值:   无
;;;备注  :   本函数系为友人陈宏编制.
;;;--------------------------------------------------------

(DEFUN C:LOOKAT        (/)  
  ;;(COMMAND "_.undo" "_begin")
  ;;调入ActiveX支持
  (VL-LOAD-COM)
  ;;设置 "控制是否对主单位值作消零处理",以保证形如12.500转换为字符串后为“12.500”而不是“12.5”
  (SETVAR "dimzin" 0)
  ;;该变量用于为下面的WHILE循环提供判断条件
  (SETQ %resv 2)
  ;;本变量用于存储DCL对话框在屏幕上显示的位置
  (SETQ #showpt '(650 150))
;;;----------------------------------------------------
;;;准备调用DCL
;;;-------------------------------------
  ;;调入对话框
  (WHILE (= %resv 2)
    (SETQ dcl_id (LOAD_DIALOG "LOOKAT"))
    (IF        (< dcl_id 0)
      (EXIT)
    ) ;_ 结束if
    (NEW_DIALOG "LOOKPolyLen" dcl_id "" #showpt)
    ;;设置各控件初始值
    ;;向列表框添加内容,有两个条件,1,%SHOW 的值为1时,2,#LIST(用于存储多段线各段的长度)
    (IF        (AND (= %show 1) (/= #LIST1 nil))
      (PROGN
        ;;开始添加
        (START_LIST "list1")
        (MAPCAR 'ADD_LIST #LIST1)
        (END_LIST)
        ;;结束添加
        ;;设置显示条数的文本编辑框的值
        (SET_TILE "text-num" (ITOA %REP))
        ;;设置显示总长的文本编辑框的值
        (SET_TILE "text-len" (RTOS !ALL-LEN 2 4))
      ) ;_ 结束progn
    ) ;_ 结束if

    ;;设置动作
    ;;当在列表框中单击时发生
    (ACTION_TILE "list1" "(LOOKAT:Hilight $value)")
    ;;当按下“选择”按钮时发生
    (ACTION_TILE "bu_select" "(setq %show 1)(DONE_DIALOG 2)")
    ;;当按下“确定”时发生
    (ACTION_TILE "accept" "(setq %show 0)(DONE_DIALOG 1)")
    ;;当按下“放弃”时发生
    (ACTION_TILE "cancel" "(setq %show 0)(DONE_DIALOG 0)")
    ;;显示并将控制权交对话框
    (SETQ %resv (START_DIALOG))
    ;;当返回值为2时说明用户点击了“选择”按钮,调用子函数
    ;;需要特别说明的是“选择”按钮是一个retirement_button,不同于一般的button
    ;;其作用是暂时隐藏对话框
    (IF        (= %resv 2)
      (lookat:select)
    ) ;_ 结束if
  ) ;_ 结束while
  ;;结束对话框
  (UNLOAD_DIALOG dcl_id)
  ;;(COMMAND "_.undo" "_end")


) ;_ 结束DEFUN

;;;--------------------------------------------------------
;;;函数: lookat:select
;;;--------------------------------------------------------
;;;来源:            作者: 何俊
;;;编制时间:2006.5.16
;;;功能:     取出用户选择所有多段线长度,生成总长度,列表框
;;;          内容
;;;语法:     lookat:select
;;;参数      无
;;;返回值:   无
;;;备注  :   本函数供c:LOOKAT函数调用.
;;;--------------------------------------------------------

(DEFUN lookat:select ()                        ;(/ ss1 e-name1 obj1 %REP %ID !LEN #LIST1)
  (SETQ %ID 0)
  (SETQ #LIST1 NIL)
  (SETQ !ALL-LEN 0.0)
  ;;提示用户选择多段
  (SETQ ss1 (SSGET '((0 . "LWPOLYLINE,LINE"))))
  (IF ss1
    (PROGN
      (SETQ %REP (SSLENGTH SS1))
      (REPEAT %REP
        ;;取图元名
        (SETQ E-NAME1 (SSNAME SS1 %ID))
        ;;(redraw E-NAME1 4)
        ;;将图元转换为Activex对象
        (SETQ OBJ1 (VLAX-ENAME->VLA-OBJECT E-Name1))
        ;;取总长度
        (SETQ !LEN (VLA-GET-LENGTH OBJ1))
        ;;累积总长度
        (SETQ !ALL-LEN (+ !ALL-LEN !LEN))
        ;;组合在列表框内显示的字符串
        (SETQ
          #LIST1
           (APPEND
             #LIST1
             (LIST (STRCAT (ITOA (+ %ID 1)) " ..." (RTOS !LEN 2 3))
             ) ;_ 结束LIST
           ) ;_ 结束APPEND
        ) ;_ 结束SETQ
        (SETQ %ID (+ %ID 1))
      ) ;_ 结束REPEAT
    ) ;_ 结束progn
    ;;如果用户未做选择,则赋%SHOW为0,所有的控件将不会被赋值,显示为空白
    (SETQ %show 0)
  ) ;_ 结束if

) ;_ 结束defun

;;;--------------------------------------------------------
;;;函数: lookat:Hilight
;;;--------------------------------------------------------
;;;来源:            作者: 何俊
;;;编制时间:2006.5.16
;;;功能:     亮显/取消亮显用户在列表框内点击的项目相对应的
;;;          多段线
;;;语法:     lookat:Hilight $ID
;;;参数      $ID....用户所点击列表框项目索引值
;;;返回值:   无
;;;备注  :   本函数供c:LOOKAT函数调用.
;;;--------------------------------------------------------

(DEFUN lookat:Hilight ($ID)
  (IF e-name2
    (REDRAW e-name2 4)
  ) ;_ 结束if
  (SETQ e-name2 (SSNAME ss1 (ATOI $ID)))
  (REDRAW e-name2 3)
  (PRINC)
) ;_ 结束defun
;;;;;**************************************************************************
;;下面是DCL文件的代码

dcl_settings : default_dcl_settings { audit_level = 3; }

LOOKPolyLen : dialog {
    label = "查看多段线长度";
    : boxed_column {
        label = "多段线长度列表";        
        : list_box {
            key = "list1";
            //list = "1234,erqer";
            width = 20;
            height = 20;
        }
        : column {
          : row {
            : edit_box {
                label = "共选中多段线   ";
                key = "text-num";               
                edit_width = 6;
            }
            : text {
                label = "条";
            }
           }
            : edit_box {
                label = "总长度";
                key = "text-len";               
                edit_width = 20;
            }
        }
    }
:row {
    :retirement_button
        {label = "选择..";key = "bu_select";}
    ok_cancel;
}
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 23:29 , Processed in 0.174493 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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