找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 933|回复: 2

[求助] [求助]:为什么显示不了对话框?

[复制链接]
发表于 2006-9-27 22:08:03 | 显示全部楼层 |阅读模式

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

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

×
我编辑了一个对话框,以及运行这个对话框的LISP程序,但却显示不了对话框,AUTOCAD提示错误为该对话框没有“确定”、“退出”按钮,不知哪里出了错?
DCL程序如下:
leftview_box : dialog {
                 label = "左视图";                 
                 : image {
                     key = "left_image";
                     width = 25;
                     aspect_ratio = 1.0;
                     color = 0;
                 }
                 : radio_row {
                     : radio_button {
                         label = "有断开线";
                         key = "break";
                         value = "0";
                     }
                     : radio_button {
                         label = "无断开线";
                         key = "nbreak";
                         value = "0";
                     }
                 }
                 : edit_box {
                     label = "实际长度:";
                     key = "truesize";
                     width = 8;
                 }
                 : row {
                     : edit_box {
                         label = "绘制长度:";
                         key = "drawsize";
                         width = 8;
                     }
                     : toggle {
                         label = "窗口指定";
                         key = "winsize";                             
                     }
                 }
                 : radio_row {
                     label = "断开线";
                     : radio_button {
                         label = "居中";
                         key = "midbreak";
                     }
                     : radio_button {
                         label = "窗口指定";
                         key = "winbreak";
                     }
                 }
                 : row {
                     : button {
                         label = "指定端点<";
                         key = "accept";
                         width = 8;
                         fixed_width = true;
                     }
                     : button {
                         label = "取消";
                         key = "cancel";
                         width = 8;
                         fixed_width = true;
                     }                        
                 }
                 :spacer {width = 1;}                 
                 errtile;
             }

LISP程序如下:
(defun c:left ()
  (setq dcl_id (load_dialog "leftview.dcl"))
  (if (not (new_dialog "leftview_box" dcl_id)) (exit))
  (set_tile "break" "1")
  (setq        x (dimx_tile "left_image")
        y (dimy_tile "left_image")
  )
  (start_image "left_image")
  (fill_image 0 0 x y -2)
  (slide_image
    0                                 -30
    x                                 y
    "d:/AutoCAD 2005/develop/script/bleft_type"
   )
  (end_image)
  (set_tile "midbreak" "1")
  (action_tile
    "break"
    "(setq key1 $key val1 $value)(breakselect)"
  )
  (action_tile
    "nbreak"
    "(setq key1 $key val1 $value)(breakselect)"
  )
  (action_tile "truesize" "(setq tsize $value)")
  (action_tile "drawsize" "(setq dsize $value)")
  (action_tile
    "winsize"
    "(mode_tile \"drawsize\" \"0\")"
  )
  (action_tile "midbreak" "(break 1)")
  (action_tile "winbreak" "(break 2)")
  (action_tile "accept" "(done_dialog 1)")
  (action_tile "cancel" "(done_dialog 0)")
  (start_dialog)
  (unload_dialog dcl_id)
)

请各位大侠帮忙分析一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-9-27 23:05:28 | 显示全部楼层
: row {
                : button {
                        label = "指定端点<";
                        key = "accepty";
                        width = 8;
                        fixed_width = true;
                }
                : button {
                        label = "取消";
                        key = "cancel";
                        width = 8;
                        fixed_width = true;
                }
        }
就是这里出的问题吧。和系统定义好的确定和放弃的KEY值相同了。改为其它,再在后面加上ok_cancel; 或是ok_cancel_help; 的就行了。如果一定要用“指定端点<”来代替确定键,可以尝试“自定义退出按钮文本”,我改了一下,请看一面:
pick_button : retirement_button {
               label = "指定端点(&<)";
               key = "accept";

}
pick_cancel_help : column {
              : row {
                 fixed_width = true;
                 alignment = centered;
                 pick_button;
                 : spacer { width = 2; }
                 cancel_button;
                 : spacer { width = 2; }
                 help_button;
              }

}
//上面就是自定义按钮哈
leftview_box : dialog {
        label = "左视图";
        : image {
                key = "left_image";
                width = 25;
                aspect_ratio = 1.0;
                color = 0;
        }
        : radio_row {
                : radio_button {
                        label = "有断开线";
                        key = "break";
                        value = "0";
                }
                : radio_button {
                        label = "无断开线";
                        key = "nbreak";
                        value = "0";
                }
        }
        : edit_box {
                label = "实际长度:";
                key = "truesize";
                width = 8;
        }
        : row {
                : edit_box {
                        label = "绘制长度:";
                        key = "drawsize";
                        width = 8;
                }
                : toggle {
                        label = "窗口指定";
                        key = "winsize";
                }
        }
        : radio_row {
                label = "断开线";
                : radio_button {
                        label = "居中";
                        key = "midbreak";
                }
                : radio_button {
                        label = "窗口指定";
                        key = "winbreak";
                }
        }
//        : row {
//                : button {
//                        label = "指定端点<";
//                        key = "accepty_my";
//                        width = 8;
//                        fixed_width = true;
//                }
//                : button {
//                        label = "取消";
//                        key = "cancel_my";
//                        width = 8;
//                        fixed_width = true;
//                }
//        }
        pick_cancel_help; //注意这里
        :spacer {width = 1;}
        //ok_cancel;
        //ok_only;
        errtile;       

}
*************************
在下面附上AUTOCAD帮助中相关内容:

对于某些对话框,您可能想修改一个退出按钮中的文本内容。例如,如果创建一个用于删除数据的对话框,则将“确定”按钮改为“删除”可能会更安全一些。要做到这一点,可以如下使用 retirement_button 控件原型:

destroy_button : retirement_button {
               label = "删除(&D)";
               key = "destroy";

}

注意 label 属性中与 (&) 符号的用法,它为控件指定一个助记符。这样,按钮标签中的字母 D 被指定为助记符,并且该字母带下划线。
注意 在自定义退出按钮组件时,最好使用从 base.dcl 文件中取出适当的 DCL 代码,而不要引用某本手册中的代码。
定义了自定义的退出按钮之后,需要将其嵌入到符合标准控件组外观和功能的组件中。以下样例显示 ok_cancel_help 组件的当前定义:

ok_cancel_help : column {
             : row {
                fixed_width = true;
                alignment = centered;
                ok_button;
                : spacer { width = 2; }
                cancel_button;
                : spacer { width = 2; }
                help_button;
              }

}

如下创建一个新的组件,用新按钮替换 ok_button:

destroy_cancel_help : column {
              : row {
                 fixed_width = true;
                 alignment = centered;
                 destroy_button;
                 : spacer { width = 2; }
                 cancel_button;
                 : spacer { width = 2; }
                 help_button;
              }

}

在标准组件中,“确定”按钮是缺省按钮,但其属性没有添加到 destroy_button 中。然而,如果对话框的操作具有一定的破坏性(或非常耗时),则强烈建议您将“取消”按钮设置为缺省按钮。这样,此按钮既是缺省按钮,同时又是取消按钮:

destroy_cancel_help : column {
              : row {
                 fixed_width = true;
                 alignment = centered;
                 destroy_button;
                 : spacer { width = 2; }
                 : cancel_button { is_default = true; }
                 : spacer { width = 2; }
                 help_button;
              }

}

因为有一个属性被修改了,原先的“取消”按钮在此作为一个控件原型。同时在 cancel_button 前面添加了一个冒号。
警告! 如果“取消”按钮和缺省按钮是同一个按钮(is_default 和 is_cancel 都被设置为 true),同时没有将调用函数 done_dialog 的操作指定给其他按钮,则除了此按钮以外,其他按钮都无法退出对话框,对话框只能通过取消被关闭。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 11:16 , Processed in 0.198173 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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