Futurebasic/语言/参考/def embedbutton
✔ 外观 ✔ 标准 ✔ 控制台
DEF EMBEDBUTTON(childButtonID&, parentButtonID&)
2002 年 2 月(版本 6)
外观管理器可以在单个父按钮(或超级控件)中嵌入多个按钮(子控件)。事实上,按钮可以嵌入到按钮中,而按钮又可以嵌入到其他按钮中。其优势是巨大的。举个例子:每个窗口都有一个根控件。窗口中的所有按钮都嵌入到这个根控件中,或者嵌入到它的子控件之一中。当窗口变为非活动状态时,根控件被禁用。通过这一条指令(由 FB 运行时实现),窗口中的所有其他控件都会自动被禁用。
其多功能性扩展到诸如在选项卡控件中显示或隐藏窗格,或在组中嵌入按钮。
以下示例创建了一个单选按钮组,并将各个按钮嵌入到超级控件中。因此,您可以轮询组按钮以找出当前选中的哪个单选子控件。
图像 d/DEF%20EMBEDBUTTON02.gif
DIM r as rect
DIM pR as rect
DIM h as handle
DIM bRef as long
DIM err as OSErr
// 创建一个窗口
SETRECT(r,0,0,_btnWd_btnMargin_btnMargin,120)
APPEARANCE WINDOW 1,,@r
err = FN SETTHEMEWINDOWBACKGROUND( window( _wndPointer ),¬
_kThemeActiveDialogBackgroundBrush, _zTrue )
// 按钮 #1 是父按钮
// 请注意,父按钮有足够的空间,以便 // 它在其自己的矩形内容纳所有嵌入的按钮
SETRECT(r,_btnMargin,_btnMargin,¬
_btnMargin_btnWd,(_btnMargin_btnHt)*3)
APPEARANCE BUTTON bRef,_activeBtn,0,0,1,¬
"",@r,_kControlRadioGroupProc
bRef ++
SETRECT(r,_btnMargin,_btnMargin,_btnMargin_btnWd,¬
_btnMargin_btnHt)
APPEARANCE BUTTON bRef,_activeBtn,0,0,1,¬
"单选按钮 1",@r,_kControlRadioButtonProc
DEF EMBEDBUTTON(bRef,1)
bRef ++ : offsetrect(r,0,_btnHt_btnMargin)
APPEARANCE BUTTON bRef,_activeBtn,0,0,1,¬
"单选按钮 2",@r,_kControlRadioButtonProc
DEF EMBEDBUTTON(bRef,1)
bRef ++ : offsetrect(r,0,_btnHt_btnMargin)
APPEARANCE BUTTON bRef,_activeBtn,0,0,1,¬
"单选按钮 3",@r,_kControlRadioButtonProc
DEF EMBEDBUTTON(bRef,1)
LOCAL FN handleDialog
DIM AS LONG action,reference
action = DIALOG(0)
reference = DIALOG(action)
LONG IF action = _btnclick
MOVETO(8,100)
PRINT "当前按钮 ";button(1);
END IF
END FN
ON DIALOG FN handleDialog
DO
HANDLEEVENTS
UNTIL 0