Tutorial 11: Tabbers
The MaxGUI Beginner Tutorial Series - Tutorial 11: Tabbers
(c) Assari Dec 28 2005
Ins Deutsche übersetzt von simi
In diesem Tutorial werden wir uns mit Tabbers beschäftigen. Bein einem Tabber hat man sozusagen eine Auswahl zwischen verschiedenen Seiten. Er wird meistens zum Anzeigen von mehreren Dokumenten benutzt.
Schauen wir ein einfaches Tabber-Beispiel an:
SuperStrict Import MaxGui.Driver Local MyWindow:TGadget=CreateWindow("Tabber-Beispiel", 200,200,320,240) Local Tabber:TGadget=CreateTabber(10,10,290,140,MyWindow) AddGadgetItem Tabber,"Erster Item" AddGadgetItem Tabber,"Zweiter Item" Repeat WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE End End Select Forever |
Wir wir unten sehen können, wir bei jedem AddGadgetItem-Aufruf ein neuer Tab zum unserem Tabber-Gadget hinzugefügt. Wechsle zwischen den verschiedenen Tabs. Im Moment passiert noch nicht so viel.
|
Ein Tabber muss zusammen mit anderen Gadgets benutzt werden, um irgendeinen Sinn zu machen. Im untenstehenden Programm benutze ich Labels.
SuperStrict Import MaxGui.Driver Local MyWindow:TGadget=CreateWindow("Tabber-Beispiel", 200,200,320,240) Local Tabber:TGadget=CreateTabber(10,10,290,140,MyWindow) Local Label0:TGadget=CreateLabel("Label0: Irgendws Tolles...",50,20,200,40,Tabber) Local Label1:TGadget=CreateLabel("Label1: Hier gäbe es auch irgendwas...",50,20,200,40,Tabber) AddGadgetItem Tabber,"Tab 0" AddGadgetItem Tabber,"Tab 1" SelectGadgetItem Tabber,1 Repeat WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE End Case EVENT_GADGETACTION Select EventData() Case 0 HideGadget Label1 ShowGadget Label0 Case 1 HideGadget Label0 ShowGadget Label1 End Select End Select Forever |
Wenn wir auf die Tabs klicken, erscheint der dazugehörige Text.
|
In Tabbers muss ein bisschen Arbeit/Code investiert werden, um die Illusion zu erwecken, dass die Tabs wirklich einen Inhalt haben. Deshlab ist man auf andere Gadgets (wie das Label) angewiesen, um ihnen einen Inhalt zu geben.
Was Tabbers aber senden, sind Events, auf die wir reagieren können. Lass uns das Programm im Detail ansehen.
SelectGadgetItem Tabber,1 |
Wie bei anderen, listenbasierten Gadgets (Listboxen und Comboboxen), sind auch hier viele der früher erklärten Funktionen gültig. Der SelectGadgetItem-Befehl wählt Tab1 aus.
Case EVENT_GADGETACTION Select EventData() Case 0 HideGadget Label1 ShowGadget Label0 Case 1 HideGadget Label0 ShowGadget Label1 End Select |
Wenn der User auf einen der Tabs klickt wir von MaxGUI ein EVENT_GADGETACTION gesendet. Wir müssen dann die EventData mit der EventData()-Funktion überprüfen. Wenn der Benutzer den ersten Tab anklickt, gibt EventData() 0 zurück und wenn der Benutzer den zweiten Tab auswählt, liefert EventData() 1 zurück.
Die HideGadget und ShowGadget Funktion werden dann benutzt, um den korrekten Gadget im Tabber-Bereich anzuzeigen. Ich hoffe es ist klar, dass die Tabber nicht individuelle "Flächen" für jeden Tab haben. Der Programmierer muss deshalb das Anzeigen des richtigen Inhalts übernehmen, wenn der Benutzer auf einen Tab klickt.
Wenn wir viele Tabs in unserem Tabber haben, erscheint eine Scrollbar. Lass uns ein Beispiel ansehen
SuperStrict Import MaxGui.Driver Local MyWindow:TGadget=CreateWindow("Tabber-Beispiel", 200,200,320,240) Local Tabber:TGadget=CreateTabber(10,10,290,140,MyWindow) For Local i:int=500 To 510 AddGadgetItem Tabber,i Next Repeat WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE End End Select Forever |
Beim Drücken auf den rechten oder linken Pfeil bewegen sich die Tabs.
|
Wir können auch unsere Tabs mit Icons verschönern, wie bei den List- oder ComboBoxen. Hier ist ein Beispiel:
SuperStrict Import MaxGui.Driver Local MyWindow:TGadget=CreateWindow("Tabber-Beispiel", 200,200,320,240) Local Tabber:TGadget=CreateTabber(10,10,290,140,MyWindow) Local IconStrip:TIconStrip=LoadIconStrip("D:My Documents on E_Tutorialstoolbar.bmp") SetGadgetIconStrip(Tabber, IconStrip) AddGadgetItem Tabber,"Erster Item",0,5 AddGadgetItem Tabber,"Zweiter Item",0,6 Repeat WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE End End Select Forever |
Unsere Tabs haben nun Icons. Viele der andere Funktionen, die wir in unseren früheren Listbox-Tutorials angeschaut haben, sind auch für die Tabber gültig.
|
Zum Schluss...
Tabbers sind sehr einfache Gadgets, die in allen modernen GUIs erscheinen. Immer wenn es eine grosse Anzahl von Sachen (z.B. Optionen) zu managen gibt, werden Tabbers angewendet.
Errinner wir uns, was wir bis jetzt gelernt haben
- Tabbers können mit der CreateTabbers-Funktion erstellt werden.
- Tabbers sind auch listenbasiert, wie Listboxen und Comboboxen. Viele der Gadget-Funktionen wie AddGadgetItems, ModifyGadgetItems können auch auf Tabber angewendet werden.
- Icons können mit LoadIconStrip und SetGadgetIconStrip zu den Tabs hinzugefügt werden.