找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2187|回复: 2

[教学] DCL & ODCL

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2014-9-5 21:24:38 | 显示全部楼层 |阅读模式

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

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

×
记录一下今天的点滴思想

1 Odcl filename_Form_Control  总体控件是这样一个层次
  DCL  Dialog + Control Dialog (xxxx:dialog {) xxx 对应的 ODCL filename ,中间层次是 row column

2 加载
   ODCL 一般步骤
  (dcl_project_load filename);_加载ODCl文件
  (dcl_form_show filename_form);_显示 ODCL 界面
  DCL 一般步骤
  (setq id (load_dialog filename));_加载 DCL 文件
  (new_dialog dialogname id);_开始一个新对话框并显示
  ....
  (start_dialog);_显示对话框并把控制权交给对话框
  (unload_dialog id);_关闭卸载对话框

3 对话框控制
    除了ODCL 的 Modeless 对话框,其它模式和 DCL 一样,对话框显示后控制权都交由对话框控制
    ODCL 中每个控件是由事件(Event)控制,每个事件必须要定义一个回调函数来完成特定动作,这些函数是独立定义的,而且事件触发前必须已经加载了回调函数
    DCL在这个方面就简单了,每个控件你可以定义回调也可以不定义,仅仅由一个函数 Action_tile 控制 ,

4 对话框初始化
  ODCL 可以在界面中把数据写入,但有些必须在 OnInitilize 中加入,加载 ODCL 就触发一个 初始化 事件,由此完成默认值设置
  DCL 的默认值设置是在 new_dialog 之后 start_dialog 之前设置

5 回调函数
  ODCL回调函数一般是全局函数,必须在事件触发之前加载
  DCL 的 action_tile 须在 new_dialog 和 start_dialog 之间加载,即控制权交给对话框之前加载,这个和 ODCL 的事件回调函数一致
  ODCL的回调函数必须是 C:filename_form_control_OnXXX ,这个函数的调用有 ARX 控制
  DCL 的动作回调必须是 string 形式,你可以先定义一个 (defun func () ...) ,然后用 (action_tile key "(func)") 完成,这个和 (xdrx_pointmonitor ss func) 回调函数需用字符串形式一个道理,ARX 限定了回调 Lisp 只能用 string 格式

总结

ODCL
    事件回调函数1
    事件回调函数2
    .....
    (defun c:xxx ;_主程序主要就是完成一个 ODCL 的加载和显示
       ....
       (dcl_project_load dclfile)
       (dcl_form_show filename_form);_显示后所有动作就由那些回调函数完成了
       (princ)
    )
DCL

   (defun c:xxx ;_主程序
       ...
      (setq id (load_dialog filename))
      (new_dialog dialog id)
      默认参数设置部分,set_tile/ image_file 等等
      ....
      (action_tile key1 "(func1)");_定义控件回调函数
      (action_tile key2 "(func2)")
      ....
      (start_dialog);_控制权交给对话框
      (unload_dialog id);_对话框关闭后卸载 DCL
      ...
    )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1个

财富等级: 恭喜发财

发表于 2014-9-5 22:53:01 | 显示全部楼层
集聚点滴火花,终有燎原之势。 ---赞大师好习惯。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 02:55 , Processed in 0.403429 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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