MDIGadget()
Syntaxe
Resultat = MDIGadget(#Gadget, x, y, Largeur, Hauteur, SousMenu, ElementMenu [, Options])Description
Crée un espace dans lequel peuvent 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). Si #PB_Any est utilisé pour le paramètre '#Gadget', le numéro du nouveau gadget sera renvoyé dans 'Resultat'.
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.
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.
Notes complémentaires:
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 dynamiques) 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. Après avoir créé une fenêtre MDI fille, CreateGadgetList() doit être appelé avant d'ajouter des gadgets dessus. 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, ...).
Le paramètre facultatif 'Options' peut être une combinaison des constantes suivantes:#PB_MDI_AutoSize : Le gadget sera automatiquement retaillé en fonction de la taille de la fenêtre mère. Si 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.
Vous pouvez ajouter une 'mini aide' à ce gadget en utilisant GadgetToolTip().
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.
- ClearGadgetItemList(): 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 necessaire 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.Ce gadget supporte les commandes 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 CreateGadgetList(WindowID(#FenetrePrincipale)) And CreateMenu(#FenetrePrincipale, WindowID(#FenetrePrincipale)) MenuTitle("Index de menu 0") MenuTitle("Menu des fenêtres filles") MenuItem(0, "Elément créé soi-même") MenuItem(1, "Elément créé soi-même") MDIGadget(0, 0, 0, 0, 0, 1, 2, #PB_MDI_AutoSize) AddGadgetItem(0, #FenetreFille, "Fenêtre fille") CreateGadgetList(WindowID(#FenetreFille)) ; ajouter des gadgets ici... UseGadgetList(WindowID(#FenetrePrincipale)) ; retourne à la liste de gadgets de la fenêtre principale EndIf Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow EndIf
OS Supportés
Windows