Growbook, Cannabis, Notizbuch, Growbuch, Pflanzenzucht, Samenbank, Seedbank, Software, Stammbaum, Kreuzen, züchten,growen,anbauen,News,GIB,Lux,Omega,Mars, Dünger,BioBizz,Hesi,Athena,
die Software für deinen Anbau

Willkommen

Tutorial 8: Mehr Listboxes und GadgetItems

The MaxGUI Beginner Tutorial Series - Tutorial 8: Mehr Listboxes und GadgetItems
(c) Assari Dec 26 2005
Ins Deutsche übersetzt von simi
In diesem Tutorial werden wir die zusätzlichen GadgetItem-Funktionen anschauen, die uns MaxGUI zur Verfügung stellt um Listboxen zu manipulieren. Gebräuchlich sind Listboxen um dem Benutzer eine Auswahl zu präsentieren, aus der er sich entscheiden kann.

Die Hilfe listet uns folgende relevante Funktionen auf:
AddGadgetItems, ClearGadgetItems, ModifyGadgetItems, SelectGadgetItems, SelectedGadgetItems und RemoveGadgetItems.

Bevor wir starten, lass uns sehen, wie wir unsere Listbox schnell füllen können.

    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
   End Select
Forever


Beachte dass ich eine For/Next-Schleife hinzugefügt habe, um schnell Zahlen in unsere Box einzufügen. Beachte auch, dass die Listbox jetzt eine Scrollbar hat hat, weil die Anzahl der Items die Höhe der Listbox übersteigt.

    Tut8 1


Jetzt, wo wir eine längere Liste haben, können wir mit dem Manipulieren starten.

Lass uns mit SelectedGadgetItem starten.

SelectedGadgetItem hat die folgende Syntax

Function SelectedGadgetItem(gadget:TGadget)


Wir benutzen diese Funktion wie folgt:

    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
     SetStatusText MyWindow, "Ausgewählter Item="+SelectedGadgetItem(ListBox) 
   End Select
Forever


Beachte, dass der Index von dem Item, den wir angeklickt haben, in der Statuszeile erscheint. Nicht aber der Name/Text!

    Tut8 2


Um den Itemtext zu bekommen, müssen wir eine andere Funktion, GadgetItemText, mit folgender Syntax benutzen.

Function GadgetItemText$( gadget:TGadget,index )


Wir benutzen dann diese Funktion so:

    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
Local s:String

Repeat
  WaitEvent()
  Select EventID()
  Case EVENT_WINDOWCLOSE
     End
  Case EVENT_GADGETACTION
     s=GadgetItemText(ListBox,SelectedGadgetItem(ListBox))
     SetStatusText MyWindow, SelectedGadgetItem(ListBox) + ":" + s
   End Select
Forever


Beachte dass man jetzt den Itemtext sehen kann. Vergiss nicht, dass SelectedGadgetItem uns nur den Index (den Ort in der Liste) zurückgibt. Du musst GadgetItemText benutzen, um den Text zu erfahren.


    Tut8 3


Die nächste Funktion, die wir betrachten wollen ist RemoveGadgetItem, die folgende Syntax hat:

Function RemoveGadgetItem( gadget:TGadget,index )


Wir können einerseits einen Item programmtechnisch entfernen lassen, oder den User entscheiden lassen. Lass uns beide Methoden anschauen.

    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

RemoveGadgetItem Listbox,3

Repeat
  WaitEvent()
  Select EventID()
  Case EVENT_WINDOWCLOSE
     End
   End Select
Forever


Jetzt fehlt der Item "1003" in unserer Liste.

    Tut8 4


Um einen Item vom Benutzer zu löschen, können wir folgendes machen.

    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
      RemoveGadgetItem(Listbox,SelectedGadgetItem(ListBox))
   End Select
   SetStatusText MyWindow, "Anzahl Items in der Liste="+CountGadgetItems(ListBox)
Forever


Im Screenshot kannst du sehen, dass ich 3 Items entfernt habe. Also sind noch 48 Items übrig. (Beachte dass wir 51 Items hatten, 0-50)

    Tut8 5


Die Zeile, die unser Item löschen liess, ist die gleiche wie im vorherigen Beispiel. Der RemoveGadgetItem-Befehl muss wissen, welchen Item er löschen muss. In diesem Beispiel benutzten wir SelectedGadgetItem um den zu löschenden Item anzugeben.

          RemoveGadgetItem(Listbox,SelectedGadgetItem(ListBox))


Ich habe auch einen weiteren Befehl, CountGadgetItems, benutzt. Er gibt die Anzahl der Einträge in der Liste zurück.

       SetStatusText MyWindow, "Anzahl Items in der Liste="+CountGadgetItems(ListBox)


SelectGadgetItem (nicht mit SelectedGadgetItem zu verwechseln!) erlaubt uns einen Eintrag in der Liste auszuwählen. Nichts Spezielles. Du benutzt es so:

    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

SelectGadgetItem ListBox,3

Repeat
  WaitEvent()
  Select EventID()
  Case EVENT_WINDOWCLOSE
     End
   End Select
Forever


Beachte dass nun unser 4. Eintrag ausgewählt ist (1003 ist hervorgehoben).

    Tut8 6


Die nächste Funktion, ClearGadgetItems ist einfach. Aber sie kann gefährlich sein, wenn man sie nicht vorsichtig benutzt.

    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
     ClearGadgetItems(Listbox)
   End Select

Forever


Mit einem Klick ist die ganze Liste weg.

    Tut8 1
Tut8 1



Zum Schluss...

Dieser ListBox-Gadget hat viels anzubieten, und wird deshalb nochmals im nächsten Tutorial aufgegriffen. Wir werden zwei weitere, wichtige Funktionen anschauen. Die Themen, die wir im Moment anschauen, werden auch für andere Gadgets relevant sein.

In diesem Tutorial haben wir folgendes gelernt.

  • Wir können Items in eine Listbox mit einer for/next-Schleife und AddGadgetItem hinzufügen.
  • Wir haben gelernt, wie wir mit AddGadgetItem, ClearGadgetItems, SelectGadgetItem, SelectedGadgetItem und RemoveGadgetItem verschiedenste Sachen mit unseren Einträgen machen könne.