MDIGadget()

Syntaxe

Resultat = MDIGadget(#Gadget, X, Y, Largeur, Hauteur, SousMenu, ElementMenu [, Options])
Description
Crée un espace dans lequel peut s'afficher une ou plusieurs fenêtres filles. Ces fenêtres peuvent être librement déplacées et redimensionnées à l'intérieur de cet espace. Ce type de gestion de fenêtres s'appelle MDI (Multiple Document Interface).

Arguments

#Gadget Le numéro d'identification du nouveau gadget.

#PB_Any peut être utilisé pour générer automatiquement ce numéro.
X, Y, Largeur, Hauteur La position et les dimensions du nouveau gadget.
SousMenu L'indice du menu pour lequel l'élément de fenêtres MDI doit être ajouté.
Un MDIGadget() a toujours besoin d'une fenêtre avec menu (voir CreateMenu()). Il n'est pas possible de créer plusieurs contrôles MDI dans une seule fenêtre, car il n'y a qu'un seul menu disponible par fenêtre. Une fois créé, le gadget mettra automatiquement à jour le menu auquel il est rattaché, avec la liste des fenêtres filles ouvertes. Dans le paramètre 'SousMenu', il faut préciser l'index du sous-menu (créé avec MenuTitle()) qui sera le point d'attache aux éléments gérés par le gadget (l'index du premier sous-menu commence à 0). Le gadget ajoutera alors une barre de séparation à la fin de ce sous-menu et ajoutera la liste des fenêtres filles disponibles.
ElementMenu Le premier indice de menu à utiliser pour les fenêtres MDI.
Le gadget a besoin d'un certain nombre d'identifiants pour ses propres éléments du menu (voir le paramètre 'MenuID' de la commande MenuItem()). Dans le paramètre 'ElementMenu', il faudra indiquer le chiffre à partir duquel le gadget pourra identifier ses propres éléments. Il utilisera autant d'identifiants qu'il y aura de fenêtres filles ouvertes. Il est donc recommandé d'utiliser un nombre plus grand que le plus grand des nombres utilisé par les menus normaux du programme, pour éviter tout risque de collisions.
Options (optionnel) Peut être une combinaison de:
  #PB_MDI_AutoSize    : Le gadget sera automatiquement redimensionné en fonction de la taille de la fenêtre mère.
                        S'il n'y a pas d'autres gadgets sur la fenêtre mère, cela peut être une option très pratique.
  #PB_MDI_BorderLess  : Il n'y aura pas de bords autour du gadget.
  #PB_MDI_NoScrollBars: Quand une fenêtre est déplacée en dehors de l'espace du gadget, il n'y aura pas de barres de défilement.

Valeur de retour

Renvoie une valeur non nulle en cas de succès, zéro sinon.

Si #PB_Any a été utilisé pour le paramètre #Gadget, alors la valeur de retour est le numéro d'identification du gadget, généré automatiquement.

Remarques

A cause de la connexion avec les menus, il ne peut y avoir qu'un seul gadget MDI par fenêtre, cependant vous pouvez utiliser plusieurs fenêtres contenant un gadget MDI chacune. Ce gadget ne peut être créé que dans une fenêtre principale donc pas dans un ContainerGadget(), SplitterGadget() ou PanelGadget()).
Comme l'intérêt premier de ce gadget est de gérer de manière dynamique des fenêtres, il est recommandé d'utiliser #PB_Any (création dynamique) pour les gadgets qui seront créés dans les fenêtres filles.

Quand la commande AddGadgetItem() est utilisée avec ce gadget, l'élément créé est en fait une nouvelle fenêtre.
Ainsi, toutes les commandes de la bibliothèque Window sont disponibles pour gérer cette nouvelle fenêtre (sauf StickyWindow()). Le numéro choisi pour cet élément ne doit pas entrer en conflit avec un numéro de fenêtre déjà existant sinon l'autre fenêtre sera fermée. Le gadget MDI ne génère pas d'évènements. Les évènements concernant les fenêtres MDI filles seront reçus comme des évènements fenêtre normaux (#PB_Event_SizeWindow, #PB_Event_CloseWindow, ...).
  - GadgetToolTip() permet d'ajouter une 'mini aide' à ce gadget. 

  En complément des commandes de la bibliothèque Window (sauf StickyWindow()), 
  les commandes suivantes sont disponibles pour agir sur le gadget: 
  - CountGadgetItems()  : Renvoie le nombre de fenêtres fille. 
  - AddGadgetItem()     : Crée une nouvelle fenêtre fille. 
  - ClearGadgetItems()  : Ferme toutes les fenêtres filles. 
  - GetGadgetState()    : Renvoie l'identifiant de la fenêtre fille active. 
  - SetGadgetState()    : Change la fenêtre fille active ou ré-arrange la disposition des fenêtres filles (voir GetGadgetState()). 
  - SetGadgetAttribute(): Avec une des constantes suivantes:
    #PB_MDI_Image    : Applique une image de fond à la fenêtre MDI.
    #PB_MDI_TileImage: Applique une image de fond à la fenêtre MDI. 
                       L'image est répétée le nombre de fois nécessaire
                       pour remplir complètement la surface de la fenêtre.

  - SetGadgetAttribute(): Avec une des constantes suivantes:
    #PB_ScrollArea_InnerWidth : Modifie la largeur (en pixels) de la zone interne du gadget. 
    #PB_ScrollArea_InnerHeight: Modifie la hauteur (en pixels) de la zone interne du gadget.  

  - SetGadgetColor() et GetGadgetColor() avec la constante #PB_Gadget_BackColor comme 'TypeCouleur' 
    pour changer la couleur de fond de la fenêtre MDI.

Exemple

  #FenetrePrincipale = 0
  #FenetreFille = 1
  If OpenWindow(#FenetrePrincipale, 0, 0, 400, 300, "MDIGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget)
    If CreateMenu(#FenetrePrincipale, WindowID(#FenetrePrincipale))
      MenuTitle("Index de menu 0")
      MenuTitle("Menu des fenêtres filles")
        MenuItem(0, "Elément auto-créé")
        MenuItem(1, "Elément auto-créé")
        
      MDIGadget(0, 0, 0, 0, 0, 1, 2, #PB_MDI_AutoSize)
        AddGadgetItem(0, #FenetreFille, "Fenêtre fille")
          ; ajouter des gadgets ici...
      UseGadgetList(WindowID(#FenetrePrincipale)) ; renvoie à la liste de gadgets de la fenêtre principale
    EndIf
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf

OS Supportés

Windows

<- ListViewGadget() - Gadget Index - OpenGLGadget() ->