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:}
我一直要找两个好看的 “针头”图标,替换那个锁,谁有给我传下。
|