BUTTON& fonction

Syntaxe :

btnHndl& = BUTTON&(btnID&|%)

Révision :

Février 2002 (Release 6)

Description :

Pour le bouton ou la barre de défilement (de la fenêtre courante) spécifié par btnID% ou btnID& (avec le runtime Appearance), cette fonction renvoie un handle pointant sur le “record de contrôle” (control record) de ce bouton. Le “record de contrôle” contient des informations concernant le bouton comme son rectangle, son état, son titre, etc. (Voyez le chapitre Control Manager dans Inside Macintosh: Macintosh Toolbox Essentials, pour les détails). Une fois le handle obtenu, vous pouvez accéder aux divers champs du record comme suit :

btnHndl&..nextControl& handle sur le contrôle suivant de la fenêtre
btnHndl&..contrlOwner& pointeur sur la fenêtre du contrôle
unRect;8=[btnHndl&]+contrlRect rectangle du contrôle
btnHndl&..contrlVis` 255 si le contrôle est visible
btnHndl&..contrlHilite` état de surbrillance en cours
btnHndl&..contrlValue% valeur en cours du contrôle
btnHndl&..contrlMin% valeur minimale du contrôle (barres de défilement)
btnHndl&..contrlMax% valeur maximale du contrôle (barres de défilement)
btnHndl&..contrlDefHandle& handle sur la fonction définissant le contrôle
btnHndl&..contrlData& données accessibles par la fonction de définition du contrôle
btnHndl&..contrlAction& adresse de la procédure appelée par défaut
btnHndl&..contrlRfCon& champ RefCon du contrôle (voir ci-après)
btnHndl&..contrlTitle$ titre du contrôle

FB^3 (runtime Standard) utilise le champ RefCon (btnHndl&..contrlRfCon&) pour conserver des informations concernant le contrôle, telles que son type, son numéro identifiant, son drapeau d’activation, et pour les barres de défilement, la valeur d’incrément de page. Ceci n’est valable que pour les contrôles créés à l’aide des commandes BUTTON ou SCROLL BUTTON. Vous pouvez accéder à ces informations comme suit :

refCon& = btnHndl&..contrlRfCon&

typeControle = (refCon& AND &E0000000) >> 29 ‘bits 29-31
IDControle   = (refCon& AND &1FFF0000) >> 16 ‘bits 16-28
inactif      = (refCon& AND &8000) <> 0      ‘bit 15
incrPage     = (refCon& AND &7FFF)           ‘bits 0-14

Note :

Les techniques traditionnelles montrées ci-dessus ne sont plus valables avec Carbon du fait que le “record de contrôle” est devenu une structure opaque dans cet environnement. On ne peut donc accéder à ses valeurs et propriétés qu’au moyen de fonctions spécifiques de la Toolbox dites accesseurs (getter et setter). Ces fonctions sont également disponibles en compilation PPC.

Pour nextControl voir exemple “Imprimer contenu fenêtre” sur le CD.

contrlOwner = FN GetControlOwner( btnHndl& )
rectPtr& = FN GetControlBounds( btnHndl&, contrlRect )
SetControlBounds( btnHndl&, contrlRect )

Fonctions associées :

MoveControl( btnHndl&, horizontal, vertical )
SizeControl( btnHndl&, largeur, hauteur )
contrlVis = FN IsControlVisible( btnHndl& )
err = FN SetControlVisibility( btnHndl&,contrlVis,doDraw )

Fonctions associées :

ShowControl( btnHndl& )
HideControl( btnHndl& )
contrlHilite = FN GetControlHilite( btnHndl& )
isContrlHilite = FN IsControlHilited( btnHndl& )
HiliteControl( ControlRef, hiliteState )
err = FN ActivateControl( btnHndl& )
err = FN DeactivateControl( btnHndl& )
isContrlActive = FN IsControlActive( btnHndl& )
contrlValue = FN GetControlValue( btnHndl& )
SetControlValue( btnHndl&, contrlValue )
contrlMin = FN GetControlMinimum( btnHndl& )
SetControlMinimum( btnHndl&, contrlMin )
contrlMax = FN GetControlMaximum( btnHndl& )
SetControlMaximum( btnHndl&, contrlMax )
contrlData& = FN GetControlDataHandle( btnHndl& )
SetControlDataHandle( btnHndl&, contrlData& )
contrlAction& = FN GetControlAction( btnHndl& )
SetControlAction( btnHndl&, contrlAction& )
contrlRfCon& = FN GetControlReference( btnHndl& )
SetControlReference( btnHndl&, contrlRfCon& )
GetControlTitle( btnHndl&, contrlTitle$ )
SetControlTitle( btnHndl&, contrlTitle$ )

Note : Votre programme ne doit pas libérer les handles retournés par la fonction BUTTON& (i.e. n’utilisez pas DEF DISPOSEH(btnHndl&)). Le handle est automatiquement libéré à la fermeture du bouton (BUTTON CLOSE) ou à la fermeture de la fenêtre dans laquelle il réside.


Note : Le runtime FB^3 adapté à l’Appearance Manager utilise le champ RefCon pour stocker un handle contenant des informations additionnelles. Le format de ce handle peut être examiné avec la définition de record qui suit (extraite du fichier header RnTm Appearance.GLBL.

BEGIN RECORD FBcontrolDescription
  DIM FBcontrolRef  AS LONG       // numéro de référence FB pour les boutons et leschamps texte ou image 
  BEGIN UNION
    DIM
FBcontrolMin  AS LONG
    DIM
FBefJustClass AS LONG
  END UNION
  DIM
FBcontrolMax      AS LONG
  DIM
FBcontrolInitVal  AS LONG
  DIM
FBTempRefCon      AS LONG   // CDEF nécessite un  champ refcon spécial
  DIM FBcontrolPage     AS LONG   // pour les ascenseurs
  DIM FBefLinkcHndl     AS HANDLE // liés à un champ (0 si aucun)
  BEGIN UNION
    DIM
FBteHndl    AS HANDLE  // TEHandle du champ lié (0 si aucun)
    DIM FBPictHndl  AS HANDLE  // handle Pict d’un champ image
  END UNION
  DIM
FBcustOnEdit    AS PTR    // pour vecteur ON EDIT personnalisé
  DIM FBcontrolClass  AS SHORT  // bouton, champ, image..
  DIM FBcntrlSubclass AS SHORT  // genre de bouton  ou de champ
  DIM FBefBackPat     AS RGBColor
  DIM
FBefBackColor   AS RGBColor
  BEGIN UNION
    DIM
FBpfJust      AS BYTE
    DIM
FBefReturnOK  AS BOOLEAN
  END UNION
  BEGIN UNION
    DIM
FBTransparent AS BOOLEAN // pour champ image
    DIM FBhasFocus    AS BOOLEAN // pour gestionnaire de champ
  END UNION
  BEGIN UNION
    DIM
FBteActive      AS BOOLEAN // voir EFActivateText
    DIM FBClickReverse  AS BOOLEAN // pour champ image
  END UNION
  DIM
FBNoDrawFocus AS BOOLEAN   // voir FBdrawFocusAndFrame
  DIM FBcntrlFramed AS BYTE      // pour gestionnaire champ texte ou image
  DIM FBpaletteEF   AS BOOLEAN   // champ dans palette
  DIM FBefAutoGray  AS BOOLEAN   // grayishTextOr utilisé quand la fenêtre est inactive
  BEGIN UNION                    // ou un champ désactivé == panneau inactif
    DIM FBefDisabled  AS BOOLEAN // garde inactif texte grayishTextOr
    DIM legacyValue AS BOOLEAN   // ancienne syntaxe BUTTON
  END UNION
  DIM
&
END RECORD

Voir Aussi :