ddjlw 发表于 2011-6-12 20:42:48

求助!帮我修改这个小程序

实现两数相乘,结果显示在对话框上,按计算显示结果,按确定和取消结束对话框
代码如下,求教!
dcl:
aa:dialog {
    label = "乘法计算程序" ;
    :text {
      is_bold = true ;
      key = "field" ;
      value = "结果:" ;
    }
    :row {
      :edit_box {
            edit_width = 6 ;
            key = "a_box" ;
            label = "A" ;
      }
      :edit_box {
            edit_width = 6 ;
            key = "b_box" ;
            label = "B" ;
      }
    }
    :row {
      alignment = centered ;
      :button {
            fixed_width = true ;
            is_cancel = true ;
            key = "js" ;
            label = "计算" ;
      }
      :button {
            fixed_width = true ;
            is_cancel = true ;
            key = "accept" ;
            label = "确定" ;
      }
      :button {
            fixed_width = true ;
            is_cancel = true ;
            key = "cancel" ;
            label = "取消" ;
      }
    }
}


(defun c:CF(/ a b v1 id std ss js)
(setq v1 (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq a 12 b 20)
(setq id (load_dialog "d:/a.dcl"))
(if (< id 0) (exit))
(if (not (new_dialog "aa" id)) (exit))

(set_tile "a_box" (rtos a 2 2))
(set_tile "b_box" (rtos b 2 2))
(setq a (atof (get_tile "a_box")))
(setq b (atof (get_tile "b_box")))
(action_tile "js" "(fjs)")
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq std (start_dialog))
(unload_dialog id)
(if (> std 0)
(setq js (* a b)))
(setvar "cmdecho" v1)
(princ)
)
(defun fjs()
(setq ss(itoa js))
(setq ss (strcat "结果:" ss))
(set_tile "field" ss)
)

chengx2000 发表于 2011-6-12 21:16:28

(defun fjs ()
   (setq ss (itoa js))   ;把此处的函数itoa改为rtos更好呢?说的不对的地方请多包涵
   (setq ss (strcat "结果:" ss))
   (set_tile "field" ss)
)

ZZXXQQ 发表于 2011-6-12 22:24:37

本帖最后由 ZZXXQQ 于 2011-6-13 09:22 编辑


aa:dialog{
label="乘法计算程序";
:text{is_bold=true;key="field";value="结果=";}
:row{
:edit_box{label="A";key="a_box";edit_width=6;}
:edit_box{label="B";key="b_box";edit_width=6;}
}
:row{
:button{label="计算";key="js";}
ok_cancel;
}
}

(defun c:CF (/ id std)
(if (> (setq id (load_dialog "d:/a.dcl")) 0) (progn
(if (new_dialog "aa" id) (progn
   (set_tile "a_box" "12.00")
   (set_tile "b_box" "20.00")
   (action_tile "js" "(fjs)")
   (action_tile "accept" "(fjs) (done_dialog 1)")
   (action_tile "cancel" "(done_dialog 0)")
   (setq std (start_dialog))
)
   (princ "\n无法显示对话框!")
)
(unload_dialog id)
)
(princ "\n无法加载对话框!")
)
(if (> std 0) (setq js (* a b)))
(princ)
)
(defun fjs ()
(setq a (read(get_tile "a_box"))
       b (read(get_tile "b_box")))
(set_tile "field" (strcat "结果 = " (rtos (* a b) 2)))
)

ddjlw 发表于 2011-6-13 07:24:17

这个运行之后点计算对话框还是关闭,怎样才能不关闭点确定才关闭呢

ZZXXQQ 发表于 2011-6-13 09:22:49

三楼改了,再试试。

ddjlw 发表于 2011-6-13 17:14:56

非常感谢!!
页: [1]
查看完整版本: 求助!帮我修改这个小程序