DEF EMBEDBUTTON commande

Syntaxe :

DEF EMBEDBUTTON(boutonFilsID&, boutonPereID&)

Révision :

Février 2002 (Release 6)

Description :

L’Appearance Manager peut imbriquer plusieurs boutons ou sous-contrôles (sub controls) à l’intérieur d’un bouton-père ou super contrôle (super control). En fait, des boutons peuvent être imbriqués dans des boutons qui sont à leur tour imbriqués. Les avantages sont importants. Par exemple, chaque fenêtre dispose d’un contrôle-racine (root control). Tous les boutons de la fenêtre sont imbriqués dans ce bouton-racine ou dans l’un de ses boutons-fils. Lorsque la fenêtre est rendue inactive, le contrôle-racine est désactivé. Avec une simple commande (implémentée dans le runtime FB) tous les autres contrôles de la fenêtre sont automatiquement désactivés.

Cette faculté s’étend aux boutons à onglets et aux groupements de boutons dont les éléments constituants peuvent être affichés ou masqués avec une simple commande.

Exemple :

L’exemple suivant crée un groupement de boutons radio et imbrique chaque bouton individuellement dans le super-contrôle. Vous pouvez ainsi interroger le bouton de groupe pour connaître lequel de ses sous-contrôles est effectivement sélectionné.

DIM AS RECT   r, pR
DIM AS HANDLE h
DIM AS LONG   bRef
DIM AS OSErr  err

// réglage
_btnHauteur = 20
_btnLargeur = 80
_btnMarge   = 8
bRef = 1

// crée une fenêtre
SetRect(r,0,0,_btnLargeur_btnMarge_btnMarge,120)
APPEARANCEWINDOW 1,,@r
err = FN SetThemeWindowBackground(WINDOW(_wndPointer),_kThemeActiveDialogBackgroundBrush,_zTrue)

// le bouton n°1 est le bouton-père
// notez que le bouton-père est suffisamment grand
// pour contenir les boutons imbriqués
SetRect (r,_btnMarge,_btnMarge,_btnMarge_btnLargeur,(_btnMarge_btnHauteur)*3)
APPEARANCE BUTTON bRef,_activeBtn,0,0,1,"",@r,_kControlRadioGroupProc

bRef ++
SetRect(r,_btnMarge,_btnMarge,_btnMarge_btnLargeur,_btnMarge_btnHauteur)
APPEARANCE BUTTON bRef,_activeBtn,0,0,1,"Radio 1",@r,_kControlRadioButtonProc
DEF EMBEDBUTTON(bRef,1)

bRef ++ : OffsetRect(r,0,_btnHauteur_btnMarge)
APPEARANCE BUTTON bRef,_activeBtn,0,0,1,"Radio 2",@r,_kControlRadioButtonProc
DEF EMBEDBUTTON(bRef,1)

bRef ++ : OffsetRect(r,0,_btnHauteur_btnMarge)
APPEARANCE BUTTON bRef,_activeBtn,0,0,1,"Radio 3",@r,_kControlRadioButtonProc
DEF EMBEDBUTTON(bRef,1)

LOCAL FN
GererDialogue
DIM AS LONG action,reference

action    = DIALOG(0)
reference = DIALOG(action)

LONG IF
action = _btnclick
  MoveTo(8,100)
  PRINT "Current Button ";BUTTON(1);
END IF

END FN

ON DIALOG FN
GererDialogue

DO

  HANDLEEVENTS
UNTIL 0