Tutorial 9: Listboxes, Modify und Insert GadgetItems
The MaxGUI Beginner Tutorial Series - Tutorial 9: Listboxes, Modify und Insert GadgetItems
(c) Assari Dec 28 2005
Ins Deutsche übersetzt von simi
In diesem Tutorial werden wir die letzten MaxGUI-Funktionen anschauen, die mit den Listboxen in Verbindung stehen. Es gut, dass wir ein bisschen mehr Zeit mit diesen Funktionen verbringen, da wir sie auch noch für andere, listenbasierte Gadgets brauchen können.
ModifyGadgetItem und InsertGadgetItem sind sehr ähnlich in ihrer Funktion zu AddGadgetItem, welche wir in den vorherigen Tutorials besprochen haben.
Die Syntax:
Function ModifyGadgetItem(gadget:TGadget,index,text$,flags=0,icon=-1,tip$="",extra:Object=Null) Function InsertGadgetItem(gadget:TGadget,index,text$,flags=0,icon=-1,tip$="",extra:Object=Null) |
Der Extraparameter gegenüber AddGadgetItem ist der index-Parameter. Wie wir uns vorstellen könnnen, fügt AddGadgetItem einfach einen Eintrag am Ende der Liste hinzu. Die Insert-Funktion muss zusätzlich noch wissen, wo sie den neuen Eintrag einfügen kann. Und die Modify-Funktion muss wissen, welchen Eintrag sie ändern soll.
Lass uns sehen, wie man einen Eintrag in der Listbox verändert
SuperStrict Import MaxGui.Driver Local MyWindow:TGadget=CreateWindow("ListBox-Beispiel", 200,200,320,240) Local ListBox:TGadget=CreateListBox(10,10,200,100,MyWindow) For Local i:Int=1000 To 1050 AddGadgetItem ListBox,i Next Repeat WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE End Case EVENT_GADGETACTION ModifyGadgetItem ListBox, SelectedGadgetItem(ListBox), "Ausgewählt" End Select Forever |
Wenn wir auf ein Item klicken, ändert sich der Text des angeklickten Items durch den ModifyGadgetItem-Befehl. SelectedGadgetItem wird einmal mehr benutzt, um den Index des angeklickten Eintrags zu bekommen.
|
Leider erlaubt uns die ModifyGadgetItem-Funktion nicht nur den Parameter zu ändern, den wir wollen. Um zum Beispiel das Icon zu ändern, müssen wir folgendes tun:
SuperStrict Import MaxGui.Driver Local MyWindow:TGadget=CreateWindow("ListBox-Beispiel", 200,200,320,240) Local ListBox:TGadget=CreateListBox(10,10,200,100,MyWindow) Local IconStrip:TIconStrip=LoadIconStrip("D:My Documents on E_Tutorialstoolbar.bmp") SetGadgetIconStrip(ListBox, IconStrip) For Local i:Int=1000 To 1050 AddGadgetItem ListBox,i Next Repeat WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE End Case EVENT_GADGETACTION Local i:Int=SelectedGadgetItem(listbox) Local text:String=GadgetItemText(ListBox,i) Local flag:Int=GadgetItemFlags(ListBox,i) Local icon:Int=GadgetItemIcon(ListBox,i) icon=icon+1 If icon>11 icon=0 ModifyGadgetItem ListBox, i, text, flag, icon End Select Forever |
Wir können im Bild unten sehen, dass beim Anklicken eines Eintrages das Icon verändert wird.
|
Versuchen wir das Programm ein bisschen besser zu verstehen:
Case EVENT_GADGETACTION Local i:Int=SelectedGadgetItem(listbox) Local text:String=GadgetItemText(ListBox,i) Local flag:Int=GadgetItemFlags(ListBox,i) Local icon:Int=GadgetItemIcon(ListBox,i) |
Wir benutzen nun ein Iconstrip, um Icons zu unseren Einträgen hinzuzufügen (siehe LoadIconStrip oben; wir haben Iconstrips schon in einem früheren Tutorial besprochen). Du kannst jetzt drei neue Funktionen sehen, GadgetItemText, GadgetItemFlags und GadgetItemIcon, die uns erlauben, den Wert des Parameters (Text, Flags, Icon) beim angegebenen Eintrag zu bekommen.
icon=icon+1 If icon>11 icon=0 ModifyGadgetItem ListBox, i, text, flag, icon End Select |
Wir erhöhen nun den Iconindex um 1, so dass das nächste Icon des Iconstrip neben unserem Eintrag angezeigt wird. Wir müssen auch aufpassen, dass wir nicht ein Icon nach dem Ende des Iconstrips auswählen. Wenn wir dies machen, setzten wir icon zurück auf 0.
Beachte, dass wir in unserer ModifyGadgetItem-Linie einfach den Originaltext und die Flags, die wir mit GadgetItemText und GadgetItemFlags zurückbekommen haben, wieder angeben. Wir haben nur den Iconindex verändert.
ModifyGadgetItem ListBox, i, text, flag, icon |
Es gibt auch noch eine GadgetItemExtra-Funktion, die aber zu fortgeschritten für dieses Tutorial ist.
Die letzte Funktion, die wir besprechen, ist die InsertGadgetItem-Funktion, die uns erlaubt an irgendeiner Position in unserer Listbox einen neuen Eintrag hinzuzufügen.
SuperStrict Import MaxGui.Driver Local MyWindow:TGadget=CreateWindow("ListBox-Beispiel", 200,200,320,240) Local ListBox:TGadget=CreateListBox(10,10,200,100,MyWindow) For Local i:Int=1000 To 1050 AddGadgetItem ListBox,i Next Repeat WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE End Case EVENT_GADGETACTION Local i:Int=SelectedGadgetItem(listbox) InsertGadgetItem ListBox, i, "Eingefügter Item" End Select Forever |
Wenn man auf ein Item klickt, wird ein neuer Eintrag ob dem angeklickten Eintrag hinzugefügt:
|
Zum Schluss...
So, das ist das Ende von unserem 3 Tutorial langem Ausflug über Listboxen und dessen Funktionen, um diese zu manipulieren.
In diesem Tutorial behandelten wir
- ModifyGadgetItem und InsertGadgetItem, zwei Funktionen, die uns erlauben, einen existierenden Eintrag zu verändern oder einen neuen Eintrag an einem bestimmten Ort hinzuzufügen.
- Wir haben auch 3 Funktionen gesehen, GadgetItemText, GadgetItemFlags und GadgetItemIcon, die uns alle erlauben den aktuellen Wert eines Parameters von einem Eintrag in der Liste zu bekommen.