找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: 挚友01

[研讨] opendcl 与vlisp 之间的变量作用域好乱啊,大家是怎么管理的?

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

使用道具 举报

 楼主| 发表于 2016-3-10 22:13:26 | 显示全部楼层
错误: no function definition: C:PDPBZ1_FORM1_TEXTBUTTON1_ONCLICKED
这个"关闭主窗口"不是在主程序中吗,怎么?????????????
(defun jxt_DCL0(qze bptbz dcl_fn_1 val_7 / intResult row_val row_val1 row_val2 project-path fil f l
                            c:PDPBZ_Form1_OnInitialize
                            c:PDPBZ1_Form1_GraphicButton1_OnClicked
                            c:PDPBZ1_Form1_GraphicButton2_OnClicked
                            c:PDPBZ1_Form1_GraphicButton3_OnClicked
                            c:PDPBZ1_Form1_TextBox4_OnEditChanged
                            c:PDPBZ1_Form1_TextBox5_OnEditChanged
                            c:PDPBZ1_Form1_TextBox2_OnEditChanged
                            c:PDPBZ1_Form1_TextBox3_OnEditChanged
                            c:PDPBZ1_Form1_TextBox1_OnEditChanged
                            c:PDPBZ1_Form1_OptionButton1_OnClicked
                            c:PDPBZ1_Form1_OptionButton4_OnClicked
                            c:PDPBZ1_Form1_OptionButton3_OnClicked
                            c:PDPBZ1_Form1_OptionButton5_OnClicked
                            c:PDPBZ1_Form1_TextButton1_OnClicked
                            c:PDPBZ1_Form1_TextButton2_OnClicked
                            c:PDPBZ1_Form1_OnInitialize
                            c:PDPBZ_Form1_OptionButton2_OnClicked
                            c:PDPBZ_Form1_OptionButton3_OnClicked
                            c:PDPBZ_Form1_OptionButton4_OnClicked
                            c:PDPBZ_Form1_ComboBox1_OnEditChanged
                            c:PDPBZ_Form1_ComboBox1_OnSelChanged
                            c:PDPBZ_Form1_TextBox1_OnEditChanged
                            c:PDPBZ_Form1_TextBox2_OnEditChanged
                            c:PDPBZ_Form1_TextBox5_OnEditChanged
                            c:PDPBZ_Form1_TextBox6_OnEditChanged
                            c:PDPBZ_Form1_TextBox3_OnEditChanged
                            c:PDPBZ_Form1_TextBox4_OnEditChanged
                            c:PDPBZ_Form1_Grid1_OnSelChanged
                            c:PDPBZ_Form1_TextButton2_OnClicked
                            c:PDPBZ_Form1_TextButton3_OnClicked
                            c:PDPBZ_Form1_TextButton4_OnClicked
                            c:PDPBZ_Form1_TextButton5_OnClicked
                            c:PDPBZ_Form1_TextButton6_OnClicked
                            c:PDPBZ_Form1_TabStrip1_OnSelChanging
                            c:PDPBZ_Form1_TextButton1_OnClicked
                            c:PDPBZ_Form1_TextButton9_OnClicked
                            c:PDPBZ_Form1_TextButton8_OnClicked
                            c:PDPBZ_Form1_TextButton7_OnClicked
                            c:PDPBZ_Form1_Grid1_OnEndLabelEdit

(setq fjs (* val_7 kx))
(defun c:PDPBZ1_Form1_OnInitialize (/) ; 初始化
(dcl_MessageBox (rtos fjs 2 2))
(dcl_Control_SetText PDPBZ1_Form1_TextBox3 (rtos fjs 2 2))
(dcl_Control_SetText PDPBZ1_Form1_TextBox1 (rtos val_7 2 2))

)
;;关闭主窗口
(defun c:PDPBZ1_Form1_TextButton1_OnClicked (/)
(setq bptbz nil)
(dcl_Form_Close pdpbz1_form1 1)
(dcl_Project_Unload "pdpbz1")
;右上角的 x 关闭按钮失效
(defun c:pdpbz1_form1_OnCancelClose (Reason /)
  (/= Reason T)
)
(vl-load-com)
(command "_OPENDCL")
(if (null (vl-symbol-value 'dcl_getversionex))  (loadRtime))
(if (not (setq project-path (dcl_Project_Load "pdpbz1.odcl" T)))
    (progn ;项目无法加载,报告或记录错误
       (alert (strcat "* * * 在CAD搜索目录中未找到[" pdpbz1.odcl "]文件!"))
       (exit) ;立即退出 (或采取纠正动作并重试)
    )   
    (dcl_FORM_SHOW PDPBZ1_Form1)     
)
)  ; end 主程序结束
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-11 08:17:25 | 显示全部楼层
为什么在主程序中的控制函数都不认啊?????????
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-3-12 14:46:07 | 显示全部楼层
本帖最后由 挚友01 于 2016-3-12 16:34 编辑

kao...废了我好几个小时,终于找到了,原来非模态化窗口这样定义是不行的...难到这是opendcl中的bug ?

点评

你是怎么定义的?  详情 回复 发表于 2016-3-12 23:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-12 22:33:25 | 显示全部楼层
大家碰到过这样的事情吗?都是怎么处理的?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-3-12 23:59:29 | 显示全部楼层
挚友01 发表于 2016-3-12 14:46
kao...废了我好几个小时,终于找到了,原来非模态化窗口这样定义是不行的...难到这是opendcl中的bug ?

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

使用道具 举报

 楼主| 发表于 2016-3-13 09:15:28 | 显示全部楼层
模态化是可以在主程序中defun c:xx(/ qyy ....)
qyy 在其子程序中可以一直继承其值,可非模态化只有定义是永久变量了,且模态化与非模态化之间只能用永久变量来进行数据传递,一大堆永久变量,郁闷!
模态化:(defun jxt_DCL0(/ MX-2017 y_tt row_val row_val1 row_val2 project-path fil f l tem pc1 lc9 list_tm1 list_tm1 qzef                                          
                            c:PDPBZ1_Form1_OnInitialize                           
                            c:PDPBZ1_Form1_GraphicButton1_OnClicked
非模态化只有 (defun jxt_dcl01() 其内所有变量都要是永久的   ^___^

点评

初始化事件中定义各个值 OK执行事件中从界面取出各个值,关闭后使用值运行  详情 回复 发表于 2016-3-13 15:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2016-3-13 15:06:39 来自手机 | 显示全部楼层
挚友01 发表于 2016-3-13 09:15
模态化是可以在主程序中defun c:xx(/ qyy ....)
qyy 在其子程序中可以一直继承其值,可非模态化只有定义是 ...


初始化事件中定义各个值,显示到界面
OK执行事件中从界面取出各个值,关闭后使用值运行
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-13 15:45:37 | 显示全部楼层
OK执行事件中从界面取出各个值,意思是将值还是要赋给永久变量?

点评

一般Model对话框,OK后直接执行功能代码,无需保留变量  详情 回复 发表于 2016-3-13 22:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2016-3-13 22:19:43 来自手机 | 显示全部楼层
挚友01 发表于 2016-3-13 15:45
OK执行事件中从界面取出各个值,意思是将值还是要赋给永久变量?

一般Model对话框,OK后直接执行功能代码,无需保留变量
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-13 23:08:32 | 显示全部楼层
我要是的从一个对话框取值后,再返回到上一主对话框,也可以再执行其它功能...
因在主程序中有n个局部变量(setq l1 '(........) l2...........)
经对话OPENDCL对话后,好象已退了主程序,此时在主程序设定的变量全为nil
所以,所以...不知怎么办了....
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-13 23:54:08 | 显示全部楼层
还有就是这个返回程序,好象没真正关闭当前的非模态对话框,是因为在非模态化控制中执行的(dcl_Project_Unload "pdpbz")
(defun c:PDPBZ_Form1_TextButton10_OnClicked (/ tem f c)
(dcl_Form_Close pdpbz_form1 2)
(dcl_Project_Unload "pdpbz") ;关闭当前非模态对话框               
(setq doContinue T)
(while doContinue
  (setq doContinue nil)
  (setq intResult (dcl_FORM_SHOW PDPBZ1_Form1))   ; 模态化对话框
  (cond            
     ((= intResult 1) (setq doContinue nil))            
     ((= intResult 2) (setq doContinue nil))
     ((= intResult 3) (PDS_QY_DCL))
     ((= intResult 4) (PDP-HZdcl))  ; CAD执行程序,其中有(command   这里出错了.....
   ); cond  
)
)
如何真正的关闭非模态对话框"pdpbz",返回上一级模态化 对话框?????????

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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 07:46 , Processed in 0.340655 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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