找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5264|回复: 11

[教学] OpenDCL 非模式框--动态伸缩、开关固顶的教学视频

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-4-18 21:01:15 | 显示全部楼层 |阅读模式

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

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

×
本实例结合晓东工具箱的“快速选择”命令来讲解非模式对话框的设计技巧。



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

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2013-4-18 21:05:54 | 显示全部楼层
1、对话框运行开始时候是收缩状态,所以要在对话框OnInitialize事件里面加入代码。

[pcode=lisp,true]
(defun c:FastSelect_OnInitialize (/)
  (dcl_Control_SetHeight FastSelect 80)   ;;设置高度80
  (dcl_Control_SetPos FastSelect-OK 200 213) ;;OK按钮移动到合适位置
  (dcl_Control_SetPicture FastSelect-Fixed 138) ;;设置锁头图标
  ...........................................
)
[/pcode]

2、锁头图标转换代码

[pcode=lisp,true]
  (defun c:FastSelect-Fixed_OnClicked (/)
    (if (= 138 (dcl_Control_GetPicture FastSelect-Fixed))  ;;两个开、关锁头图片轮换
      (dcl_Control_SetPicture FastSelect-Fixed 137)
      (dcl_Control_SetPicture FastSelect-Fixed 138)
    )
  )
[/pcode]

2、对话框尺寸变化OnSize时候的处理代码

根据事件处理函数的参数NewHeight调整各个控件到合适位置

[pcode=lisp,true]
  (defun c:FastSelect_OnSize (NewWidth NewHeight /)
    (if (= 0 (dcl_TabStrip_GetCurSel FastSelect-Tab))
      (dcl_Control_SetCaption FastSelect-OK "应用")
      (progn
        (dcl_Control_SetCaption FastSelect-OK "亮显")
        (dcl_Control_SetEnabled FastSelect-OK t)
      )
    )
    (if (> NewHeight 80)
      (progn
        (dcl_Control_SetPos SelReverse 16 (- NewHeight 106))
        (dcl_Control_SetPos FastSelect-Quit 256 (- NewHeight 27))
        (dcl_Control_SetEnabled FastSelect-OK t)  ;;应用按钮可选
        (dcl_Control_SetPos FastSelect-OK 206 (- NewHeight 27));;调整应用按钮位置
        (dcl_Control_SetPos FastSelect-SSFrame 8 (- NewHeight 43))
        (dcl_Control_SetPos FastSelect-SelJH 12 (- NewHeight 26))
        (dcl_Control_SetPos FastSelect-SelAll 55 (- NewHeight 26))
        (dcl_Control_SetPos FastSelect-Region 99 (- NewHeight 26))
        (dcl_Control_SetPos FastSelect-OnLyr 142 (- NewHeight 26))
        (dcl_Control_SetPos FastSelect-Tab 8 8 296 (- NewHeight 56)) ;
      )
      (progn
        (dcl_Control_SetPos FastSelect-Tab 8 8 296 (- NewHeight 16))
        (dcl_Control_SetPos FastSelect-Quit 250 160)           ;;对话框收缩状态下OK,QUIT按钮位置
        (dcl_Control_SetPos FastSelect-OK 200 160)
      )
    )
    (if (= NewHeight 256)
      (dcl_Control_SetVisible FastSelect-Frame2 t)
      (dcl_Control_SetVisible FastSelect-Frame2 nil)
    )
    (princ)
  )
[/pcode]


3、鼠标移进、移出对话框的处理代码
  
       鼠标离开对话框(OnMouseMoveOff事件)

[pcode=lisp,true]
  (defun c:FastSelect_OnMouseMovedOff (/)
    (if (= 1 (dcl_TabStrip_GetCurSel FastSelect-Tab))  ;;判断在哪个标签下,不同标签高度不同。
      (progn  
        (if (= 138 (dcl_Control_GetPicture FastSelect-Fixed))
          (progn
            (dcl_Control_SetHeight FastSelect 40)
          )
        )
      )
      (progn
        (if (= 138 (dcl_Control_GetPicture FastSelect-Fixed))
          (progn
            (dcl_Control_SetHeight FastSelect 80)
            (dcl_Control_SetPos FastSelect-Ok 200 215)
          )
        )
      )
    )
  )
[/pcode]

     鼠标进入对话框(OnMouseEnter事件)

[pcode=lisp,true]
  (defun c:FastSelect_OnMouseEntered (/)
    (if (= 0 (dcl_TabStrip_GetCurSel FastSelect-Tab))
      (progn
        ($FastSelectTab1Init)
      )
    )
    (if (= 1 (dcl_TabStrip_GetCurSel FastSelect-Tab))
      (progn
        (dcl_Control_SetHeight FastSelect 210)
      )
    )
  )
[/pcode]

关于对话框设计的主要要点就上面这些了,其他就是程序本身实现的代码了。



说下这个“快速选择”工具,我自己比较常用的,快速的选取要操作的实体。下面这两个东西可以扔了。{:soso_e133:}



QQ截图20130418221051.png


QQ截图20130418221119.png


我一直要找两个好看的 “针头”图标,替换那个锁,谁有给我传下。



点评

做个记号,改天学习odcl的时候进来领教一下  详情 回复 发表于 2021-1-1 10:12
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

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

使用道具 举报

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

使用道具 举报

已领礼包: 117个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

发表于 2015-5-25 19:44:57 | 显示全部楼层
老大!我想做一个扩展属性的停靠框,读取当前选择实体是怎么实现的?能发下吗?我才学!opendcl的帮助看得头晕!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 2530个

财富等级: 家财万贯

发表于 2017-12-2 09:15:32 | 显示全部楼层
学习,搜资料,刚好搜到这里来,就收藏下,回去慢慢消化。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3191个

财富等级: 富可敌国

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

使用道具 举报

发表于 2021-1-1 10:12:31 | 显示全部楼层
XDSoft 发表于 2013-4-18 21:05
1、对话框运行开始时候是收缩状态,所以要在对话框OnInitialize事件里面加入代码。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-18 19:13 , Processed in 0.503818 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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