MDIGadget()
Syntax
Ergebnis = MDIGadget(#Gadget, x, y, Breite, Höhe, UnterMenü, MenüEintrag [, Flags])Beschreibung
Erstellt einen Klient-Bereich ("client area"), in welchem ChildWindow's (abgeleitete Fenster) dargestellt werden können. Diese ChildWindow's sind in diesem Bereich vollständig durch den Anwender bewegbar und größenveränderbar.
Wenn #PB_Any als '#Gadget' Parameter verwendet wird, dann wird der Identifier des neuen Gadgets als 'Ergebnis' zurückgegeben.
Ein MDIGadget() ist immer an ein Fenster-Menü (siehe CreateMenu()) geknüpft. Daher kann sich ein MDIGadget() nur auf einem Fenster befinden, welches ein Menü besitzt. Das Gadget gibt dem Anwender die Möglichkeit, die Childwindow's mittels einem der Untermenüs des Fensters auszuwählen. Beim 'UnterMenü' Parameter müssen Sie den Index des Untermenüs (erstellt mit MenuTitle()) angeben, zu welchem diese Einträge hinzugefügt werden sollen (das erste Untermenü hat den Index 0). Das Gadget wird einen Trennbalken am Ende dieses Menüs hinzufügen, und anschließend einen Eintrag für jedes aktuell dargestellte Childwindow.
Das Gadget benötigt einen Bereich von Menü-Eintrag Identifiern (siehe den 'MenuID' Parameter von MenuItem()), um diese Menüeinträge hinzufügen zu können. Im 'MenüEintrag' Parameter vom MDIGadget() müssen Sie die niedrigste Nummer angeben, welche das Gadget für diesen Zweck nutzen kann. Es wird die Werte oberhalb dieser Zahl nutzen, wenn neue ChildWindows hinzugefügt werden, daher müssen Sie mindestens soviele Nummern reservieren, wie Sie Einträge hinzufügen wollen. Es ist empfehlenswert, eine größere Nummer als alle anderen Menü-Identifier Ihres Programms zu verwenden, um eine mögliche "Kollision" (mit anderen Menüeinträgen) zu vermeiden.
Weitere Hinweise:
Aufgrund der Verknüpfung mit dem Fenstermenü kann sich nur ein MDIGadget() auf einem Fenster befinden, natürlich können Sie auf Wunsch ein weiteres auf einem zweiten Fenster platzieren. Sie können dieses Gadget nur direkt auf einem Fenster platzieren, Sie können es NICHT in ein ContainerGadget(), SplitterGadget() oder PanelGadget() einfügen.
Da der Sinn dieses Gadgets darin besteht, dynamisch Daten anzuzeigen, ist es empfehlenswert, das #PB_Any Feature zu nutzen, um ein ChildWindow mit Gadgets zu füllen.
Die ChildWindows dieses Gadgets werden nummeriert von 0 bis zur Anzahl der Fenster, einfach wie in jedem anderen Gadget. Sie müssen beim Einfügen eines neuen Fensters zwischen den bereits geöffneten Fenstern darauf achten, dass alle Nummern dieser - nach dem eingefügten befindlichen - Fenster um eins erhöht werden. Gleiches gilt beim Entfernen von Fenstern. Der beste Weg, die Daten für jedes MDI-Fenster zu managen, ist mit einer LinkedList, da hier die gleichen Regeln gelten. (Wenn Sie hier einen Eintrag zwischendrin einfügen, wird auch der der Index der darauffolgenden erhöht.)
Die folgenden Werte können im 'Flags' Parameter verwendet werden:#PB_MDI_AutoSize : Das Gadget passt sich automatisch in der Größe an, um in das übergeordnete ("Parent") Fenster zu passen. Wenn Sie keine anderen Gadgets auf diesem Fenster haben, ist dies eine hilfreiche Option. #PB_MDI_BorderLess : Es wird keine Umrandung um den Klient-Bereich gezeichnet. #PB_MDI_NoScrollBars : Wenn der Anwender ein ChildWindow außerhalb des angezeigten Bereichs verschiebt, werden keine Scrollbalken angezeigt.Das MDIGadget() gibt im Falle eines Ereignisses die folgenden Werte mittels EventType() zurück:#PB_EventType_Focus : Das aktive ChildWindow hat sich geändet. Benutzen Sie GetGadgetState(), um herauszufinden welches. #PB_EventType_CloseItem: Der Anwender hat den Schließknopf des aktiven Fensters angeklickt. Benutzen Sie auch hier GetGadgetState(), um dessen Nummer zu ermitteln. #PB_EventType_SizeItem : Ein ChildWindow wurde in der Größe verändert. Da dies nicht das aktuelle sein muss, verwenden Sie GetGadgetAttribute() mit #PB_MDI_SizedItem, um herauszufinden welches. Benutzen Sie GetGadgetItemAttribute(), um die neue Größe des ChildWindows zu ermitteln.Zu diesem Gadget kann mittels GadgetToolTip() eine 'Mini-Hilfe' hinzugefügt werden.
Die folgenden Befehle können zum Managen des Gadget-Inhalts verwendet werden:
- CountGadgetItems() : Gibt die Anzahl an ChildWindows zurück.
- AddGadgetItem() : Fügt ein neues ChildWindow zum Gadget hinzu.
- RemoveGadgetItem() : Schließt ein ChildWindow.
- ClearGadgetItemList() : Schließt alle ChildWindow's.
- GetGadgetItemText() : Ermittelt den Titel eines ChildWindow.
- SetGadgetItemText() : Ändert den Titel eines ChildWindow.
- GetGadgetState() : Ermittelt das aktuell fokussierte Childwindow.
- SetGadgetState() : Ändert das aktuell fokussierte Fenster oder ordnet die ChildWindow's. (siehe GetGadgetState()) für weitere Informationen.)
- GetGadgetItemState() : Überprüft, ob ein ChildWindow maximiert, minimiert, normal oder versteckt ist.
- SetGadgetItemState() : Ändert den Status eines ChildWindow (maximiert, minimiert, versteckt).
- GetGadgetItemAttribute() : Ermittelt die Breite oder Höhe eines Childwindow.
- SetGadgetItemAttribute() : Ändert die Breite oder Höhe eines Childwindow.
- GetGadgetAttribute() : Benutzen Sie dies mit #PB_MDI_SizedItem, um herauszufinden, welches ChildWindow in der Größe verändert wurde.
Beispiel:If OpenWindow(0,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget,"MDIGadget") If CreateGadgetList(WindowID(0)) And CreateMenu(0, WindowID(0)) MenuTitle("Menu index 0") MenuTitle("MDI windows menu") MenuItem(0, "self created item") MenuItem(1, "self created item") MDIGadget(0, 0, 0, 0, 0, 1, 2, #PB_MDI_AutoSize) AddGadgetItem(0, -1, "child window") ; add gadgets here... CloseGadgetList() EndIf Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow EndIf
Unterstützte OS
Windows, Linux, MacOS X