xhq1954425 发表于 2014-6-21 12:11:51

求指点:对话框编辑值问题

本帖最后由 xhq1954425 于 2014-6-22 08:09 编辑

本人DCL水平只限于套用,遇到新问题就为难了……


程序运行时先修改编辑框中的数值如下图:



然后再用光标拾取中心点,当再返回到对话框时,上图编辑框中的数值无效,还为默认值,(如果先点击拾取按钮后修改编辑框可正常运行)见下图:



请指点如何使编辑过的值不变……将万分感谢!      DCL为:

chilun:dialog{
label="直齿圆柱齿轮设计";
:boxed_column{
:boxed_column{
   label="请选择齿轮颜色";
   :row{
    :text_part{label="齿轮颜色:";width=7;fixed_width=true;}
    :image_button{key="color";width=4.0;height=0.5;}
   }
}
:row{
   :boxed_column{
    label="齿轮参数";
    :column{
   :row{
      :text_part{label="模数(M):";width=5;}
      :edit_box{key="moshu";edit_width=10;edit_limit=10;mnemonic="moshu";value=5;}


   }

   :row{
      :text_part{label="齿数(Z):";width=5;}
      :edit_box{key="chishu";edit_width=10;edit_limit=10;value=20;}
   }
   :row{
      :text_part{label="孔径(D):";width=5;}
      :edit_box{key="kd";edit_width=10;edit_limit=10;value=40;}
   }
   :row{
      :text_part{label="变位系数(ζ):";width=5;}
      :edit_box{key="bianwei";edit_width=10;edit_limit=10;value=0;}
   }
   :row{
      :text_part{label="齿宽(B):";width=5;}
      :edit_box{key="houdu";edit_width=10;edit_limit=10;mnemonic="houdu";value=25;}
   }
   :row{
      :radio_row{
       key="leibie";
       :radio_button{label="标准齿"; key="biaozhun";mnemonic="0";value=1;}
       :radio_button{label="短齿"; key="duanchi";mnemonic="1";}
       :radio_button{label="长齿"; key="changchi";mnemonic="2";}
      }
   }   
    }
   }
}
}
:boxed_column{
label="齿轮中心点";
:row{
   :button{label="光标拾取<";key="pick";}
   :edit_box{label="x=";width=5;key="x0";mnemonic="x0";value=0;}
   :edit_box{label="y=";width=5;key="y0";mnemonic="y0";value=0;}
}
}
ok_cancel;
}

调用程序为:
(defun c:tt()
(if (> (setq id (load_dialog "直齿圆柱齿轮.dcl")) 0) (progn
(setq std 2)
(while (> std 1)
   (if (new_dialog "chilun" id )(progn
    (if x0 (set_tile "x0" (rtos x0 2)))
      (if y0 (set_tile "y0" (rtos y0 2)))
    (action_tile "color" "(fc)")
    (action_tile "pick" "(done_dialog 2)")

    (action_tile "accept" "(readata)(done_dialog 1)")
    (action_tile "cancel" "(done_dialog 0)")
    (setq std (start_dialog))
   )
    (princ "\n无法显示对话框!")
   )

   (if (= std 2) (progn
    (initget 1)
    (setq pp (getpoint "\n拾取中心点: "))
    (setq x0 (car pp) y0 (cadr pp))

   ))
);while

(unload_dialog id)
)
(princ "\n无法加载对话框!")
)
(if(= std 1) (progn
(fxsh);系数
(fr);基本参数计算
(chilun0)
(princ (list "模数=" m "齿数=" z "孔径=" kd "变位系数=" x "D=" D "Db=" Db "Df=" Df "Da=" Da))
))
(princ)
);cl

(defun readata ()
(setq m (atof (get_tile "moshu")))   
(setq z (atoi (get_tile "chishu")))   
(setq kd (atof (get_tile "kd")));孔径
(setq x (atof (get_tile "bianwei")));变位系数
(setq b (atof (get_tile "houdu")));齿宽
(setq x0 (atof (get_tile "x0")));中心点坐标
(setq y0 (atof (get_tile "y0")))
(setq xsh (get_tile "leibie"));类别
(setq xsh
(cond
((= xsh "biaozhun") 1);标准
((= xsh "duanchi") 2);短齿
((= xsh "changchi") 3);长齿
)
)
)
…………………………
…………………………









emk 发表于 2014-6-21 20:03:56

    (action_tile "pick" "(done_dialog 2)")
应该是这里,当点击pick的同时,应增加设置当前屏显参数的变量。
(setq m (atof (get_tile "moshu")))
......

xhq1954425 发表于 2014-6-22 07:54:19

本帖最后由 xhq1954425 于 2014-6-22 08:03 编辑

emk 发表于 2014-6-21 20:03 static/image/common/back.gif
(action_tile "pick" "(done_dialog 2)")
应该是这里,当点击pick的同时,应增加设置当前屏显参数的变 ...
试过了不行……非常感谢你

xyp1964 发表于 2014-6-22 09:44:10

;;供参考

xyp1964 发表于 2014-6-22 09:49:17

其实颜色和中心点选项都多余

xhq1954425 发表于 2014-6-22 10:30:06

本帖最后由 xhq1954425 于 2014-6-22 10:32 编辑

xyp1964 发表于 2014-6-22 09:44 static/image/common/back.gif
;;供参考
谢谢小老弟,我没有系统地学过二次开发,身边又没有会的人,都是跟着明经网自学,其实不容易,由于我接触的DCL不多,基本上都是在套用别人的,所以下载了你的参考文件我没看懂……
但是你给予的帮助我是非常感谢的!谢谢!

lucas_3333 发表于 2014-6-22 17:41:46

帮你顶上去啊

fl202 发表于 2015-3-9 16:04:20

    (action_tile "pick" "(done_dialog 2)")
(action_tile "moshu" "(readata)") (action_tile "chishu" "(readata)")
(action_tile "kd" "(readata)") (action_tile "bianwei" "(readata)")
(action_tile "houdu" "(readata)")
    (action_tile "accept" "(readata)(done_dialog 1)")

或者:
    (action_tile "pick" "(readata)(done_dialog 2)")
    (action_tile "accept" "(readata)(done_dialog 1)")
页: [1]
查看完整版本: 求指点:对话框编辑值问题