Seite 1 von 1

GadgetItems

Verfasst: 01.03.2007 17:51
von kreeph
Ich habe zwei Listviewgadgets eine voll und eine leer, jetzt will ich aber die Items der leeren Liste mit Punktzahlen versehen.
Das heißt, wenn ich einen Eintrag in die zweite Liste bringe soll auf einem extra StringGadget die gesamte Punktezahl der Objekte in der Liste zu sehen sein.
z.B. ich hab Objekt 1 (10 Punkte), 2 (15 Punkte) und 3 (30 Punkte) in der Liste und auf dem StringGadget soll jetzt 55 Punkte angezeigt werden.
Ich hab aber keine Ahnung wie ich sowas hinkriegen kann.
Hoffe mal das wird nicht allzu schwer und lässt sich mit der 3.30er version machen.
Danke schonmal für eure Hilfe!

Verfasst: 01.03.2007 22:44
von Fluid Byte
Weiss nich' ob ich dich richtig verstanden habe aber so wie es interpretiere dürfte das hier von Nutzen sein:

Code: Alles auswählen

OpenWindow(0,0,0,375,290,"Punkte Dingsi",#WS_SYSMENU | #WS_CAPTION | 1)

CreateGadgetList(WindowID(0))

ListViewGadget(0,5,5,180,255,#PB_ListView_Multiselect)
ListViewGadget(1,190,5,180,255)
StringGadget(2,5,265,180,20,"")
ButtonGadget(3,190,265,85,20,"Hinzufügen")
ButtonGadget(4,285,265,85,20,"Enfernen")

For i=0 To 9
	AddGadgetItem(0,-1,"Object #" + Str(i+1) + " [" + Str((i+1)*15) + " Punkte]")
	SetGadgetItemData(0,i,(i+1)*15)
Next

Repeat
	EventID = WaitWindowEvent()

	If EventID = #PB_Event_Gadget
		Select EventGadget()
			Case 3
			State = GetGadgetState(0)
			
			If State ! -1			
				AddGadgetItem(1,-1,GetGadgetItemText(0,State,0))
				SetGadgetItemData(1,CountGadgetItems(1)-1,GetGadgetItemData(0,State))

				For i=0 To CountGadgetItems(1)-1
					Punkte + GetGadgetItemData(1,i)
				Next
				
				SetGadgetText(2,Str(Punkte) + " Punkte") : Punkte = 0
			EndIf
			
			Case 4
			State = GetGadgetState(1)
			
			If State ! -1
				RemoveGadgetItem(1,State)
				
				For i=0 To CountGadgetItems(1)-1
					Punkte + GetGadgetItemData(1,i)
				Next
				
				SetGadgetText(2,Str(Punkte) + " Punkte") : Punkte = 0			
			EndIf
		EndSelect
	EndIf
Until EventID = 16

Verfasst: 02.03.2007 21:03
von kreeph
Ok also danke erstmal für die Antwort, aber irgentwie verträgt sich der code mit meinem 3.30er nicht so ganz. :oops:

Hab den dann mal probiert in die ältere Version umzuformen, war dann aber doch nicht so dass was ich wollte, sorry.. :(
Naja also Das StringGadget soll einfach die Werte zu den Einträgen zusammenzählen. Und ich weiß jetzt nicht ob man GadgetItems auch Zahlenwerte zuordnen kann...
Ist das überhaupt noch eine Anfängerfrage? :?

Verfasst: 02.03.2007 22:13
von Kaeru Gaman
die einträge wirst du ja in irgendnem array oder ner liste haben.
daraus zählst du sie zusammen, und die summe zeigst du im stringgadget an.
das kann natürlich nur strings beinhalten, also musst du mit Str() aus der zahl nen string machen.

Verfasst: 02.03.2007 22:14
von Fluid Byte
kreeph hat geschrieben:Ok also danke erstmal für die Antwort, aber irgentwie verträgt sich der code mit meinem 3.30er nicht so ganz. :oops:
Yup, sorry. Habs nicht gesehen. Geh' immer von der neusten Version aus.
Hab den dann mal probiert in die ältere Version umzuformen, war dann aber doch nicht so dass was ich wollte, sorry.. :(
Sicher? Hast du den code 1:1 und sinngemäß in 3.30 konvertiert?
Naja also Das StringGadget soll einfach die Werte zu den Einträgen zusammenzählen.
Genau das macht der code aber das StringGadget selber zählt gar nix sondern stellt lediglich die Gesamtpunktzahl grafisch dar.
Und ich weiß jetzt nicht ob man GadgetItems auch Zahlenwerte zuordnen kann...
Absolut simpel mit Set-/GetGAdgetItemData(). Aber genau diese Befehle gibts in 3.30 nicht. Muss man API für nehmen.
Ist das überhaupt noch eine Anfängerfrage? :?
Total aber du drückst dich halt ein wenig unpräzise aus. Bild

Ich hab' den code nochmal auf 3.30 umgeschrieben:

Code: Alles auswählen

OpenWindow(0,0,0,375,290,"Punkte Dingsi",#WS_SYSMENU | #WS_CAPTION | 1)

CreateGadgetList(WindowID(0))

ListViewGadget(0,5,5,180,255,#PB_ListView_Multiselect)
ListViewGadget(1,190,5,180,255)
StringGadget(2,5,265,180,20,"")
ButtonGadget(3,190,265,85,20,"Hinzufügen")
ButtonGadget(4,285,265,85,20,"Enfernen")

For i=0 To 9
   AddGadgetItem(0,-1,"Object #" + Str(i+1) + " [" + Str((i+1)*15) + " Punkte]")

   SendMessage_(GadgetID(0),#LB_SETITEMDATA,i,(i+1)*15)      
Next

Repeat
   EventID = WaitWindowEvent()

   If EventID = #PB_Event_Gadget
      Select EventGadget()
         Case 3
         State = GetGadgetState(0)
         
         If State ! -1         
            AddGadgetItem(1,-1,GetGadgetItemText(0,State,0))
            
			SendMessage_(GadgetID(1),#LB_SETITEMDATA,CountGadgetItems(1)-1,SendMessage_(GadgetID(0),#LB_GETITEMDATA,State,0))				
					
            For i=0 To CountGadgetItems(1)-1
               Punkte + SendMessage_(GadgetID(1),#LB_GETITEMDATA,i,0)
            Next
            
            SetGadgetText(2,Str(Punkte) + " Punkte") : Punkte = 0
         EndIf
         
         Case 4
         State = GetGadgetState(1)
         
         If State ! -1
            RemoveGadgetItem(1,State)
            
            For i=0 To CountGadgetItems(1)-1
               Punkte + SendMessage_(GadgetID(1),#LB_GETITEMDATA,i,0)
            Next
            
            SetGadgetText(2,Str(Punkte) + " Punkte") : Punkte = 0         
         EndIf
      EndSelect
   EndIf
Until EventID = 16

Verfasst: 03.03.2007 12:52
von kreeph
Wow, danke jetzt funktioniert es! :o

Verfasst: 23.04.2007 17:45
von kreeph
hi nochmal an alle, ich hab noch eine Frage:
Jetzt weiß ich wa, wie ich das mit gadgetitems mache, aber wie mache ich das jetzt mit z.B. checkboxgadgets? Also ich wähle ein checkboxgadget an und die Punkte gehen um z.B. 10 hoch.
Danke schonmal für eure Hilfe! :D