ListBox wie verwenden?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: ListBox wie verwenden?

BeitragMo, Sep 10, 2007 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie kann ich eine Listbox abfragen, worauf man geklickt hat?
Ich habe nun verschiedenes Probiert, aber ich komm da nicht wirklich hinter,

habe es mit EventSource und mit EventData versucht.

mein ziel ist es herauszufinden worauf man geklickt hat und dann anzuzeigen wie das item heisst.

EDIT:
Code: [AUSKLAPPEN]
' createlistbox.bmx

Strict

Local window:TGadget
Local listbox:TGadget

window=CreateWindow("My Window",30,20,200,200)

Const ETIP$="Greate for lovers of rain, mushy peas and stomping beats.~r~nNew line..."

listbox=CreateListBox(4,4,100,80,window)

AddGadgetItem listbox,"German"
AddGadgetItem listbox,"England",False,-1,ETIP
AddGadgetItem listbox,"French",False,-1,"tip - goes here","mystringobject"

SelectGadgetItem listbox,2

Print "SelectedGadgetItem()="+SelectedGadgetItem(listbox) '-1 means none selected

While WaitEvent()
   Print CurrentEvent.ToString()
   If EventSource()=listbox
      Print "SelectedGadgetItem()="+SelectedGadgetItem(listbox)
      If EventData()<>SelectedGadgetItem(listbox) Print "error with skidracer"
   EndIf
   Select EventID()
      Case EVENT_WINDOWCLOSE
         End
   End Select
Wend


Das Beispiel ist ja schön, nur leider zeigt es nicht den namen des items an. Sad

Blitzcoder

Newsposter

BeitragMo, Sep 10, 2007 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man einen Eintrag normal anklickt, wird ein EVENT_GADGETSELECT gesendet. Als Eventdata kommt dabei die ID des Items mit dem Event. Das erste Item hat die ID 0. Bei Doppelklicks muss man etwas tricksen. Wenn ein Gadgetselect kommt, und das gleiche Item, welches eventdata() liefert, schon vorher markiert war, dann hat jemand gedoppelklickt. Dazu musst den Den Itemzustand in einer Variable zwischenspeichern, die du lastselected oder so nennen kannst.

MfG
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

FOODy

BeitragMo, Sep 10, 2007 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab das Example mal etwas verändert:
Code: [AUSKLAPPEN]
SuperStrict
Framework BRL.Win32MaxGUI
Import BRL.EventQueue

Local window:TGadget
Local listbox:TGadget

window=CreateWindow("My Window",30,20,200,200)

Const ETIP$="Greate for lovers of rain, mushy peas and stomping beats.~r~nNew line..."

listbox=CreateListBox(4,4,100,80,window)

AddGadgetItem listbox,"German"
AddGadgetItem listbox,"England",False,-1,ETIP
AddGadgetItem listbox,"French",False,-1,"tip - goes here","mystringobject"

SelectGadgetItem listbox,2

While WaitEvent()
   Select EventID()
      Case EVENT_WINDOWCLOSE Exit
      Case EVENT_GADGETACTION
         If EventSource()=listbox Print "Doppelklick auf: "+GadgetItemText(listbox,EventData())
      Case EVENT_GADGETSELECT
         If EventSource()=listbox Print "Ausgewaehlt: "+GadgetItemText(listbox,EventData())
   EndSelect
Wend


Bei EVENT_GADGETACTION und EVENT_GADGETSELECT wird die ItemID im Data-Feld gespeichert. (bzw EventData())
Notfalls könnte man aber auch SelectedGadgetItem(gadget) verwenden.

Gruß,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group