Seite 1 von 1

was ist hier falsch? (ListIconGadget mit Checkboxen)

Verfasst: 07.10.2004 15:46
von SirCus
soo eine knobelaufgabe zum feierabend.. ich komm nich drauf:

ich habe zwei ListIconGadgets
alle Einträge aus dem ersten Gadget "#ListALRech"welche per Checkbox abgehakt sind, sollen per Knopfdruck ins zweite "#ListKRneuPos" übernommen werden:

Code: Alles auswählen

ALRech=CountGadgetItems(#ListALRech)
  For x=0 To ALRech-1
    If GetGadgetItemState(#ListALRech,x)=#PB_ListIcon_Checked Or (GetGadgetItemState(#ListALRech,x) = #PB_ListIcon_Checked And GetGadgetItemState(#ListALRech,x) =#PB_ListIcon_Selected)
      AddGadgetItem(#ListKRneuPos, -1,Str(x+1)+Chr(10)+GetGadgetItemText(#ListALRech,x,1)+Chr(10)+GetGadgetItemText(#ListALRech,x,2)+Chr(10)+GetGadgetItemText(#ListALRech,x,3))
    EndIf
    
  Next
das funktioniert aber nur teilweise...
ihr werdet die komische if bedingung bemerkt haben:
GetGadgetItemState(#ListALRech,x) liefert entweder #PB_ListIcon_Checked oder #PB_ListIcon_Selected zurück.

ist also zufällig die "gecheckte" Zeile auch noch Markiert hab ich Pech gehabt, dann wird sie nich übernommen.
Deshalb hab ich noch diese "AND" verknüpfung zusätzlich eingebaut, aber auch die funkioniert nicht.

Es sollen NUR die gecheckten einträge Übernommen werden, aber AUCH wenn sie markiert sind.. aber NICHT wenn sie zwar markiert aber nicht gecheckt sind... - im grunde soll PB einfach die Markierung ignorieren, tuts aber nicht.

Verfasst: 07.10.2004 15:48
von NicTheQuick
Wie wäre es damit:

Code: Alles auswählen

If GetGadgetItemState(#ListALRech, x) & #PB_ListIcon_Checked
Schonmal das Beispiel aus der Hilfe angeschaut?

Verfasst: 07.10.2004 16:07
von bobobo
in etwa so?

Code: Alles auswählen

Enumeration
#Window_0
#ListIcon_0
#ListIcon_1
#Button_0
#Button_1
EndEnumeration

If OpenWindow(#Window_0,216,0,600,300, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar,"oi fenschdr")
  If CreateGadgetList(WindowID())
    ListIconGadget(#ListIcon_0,180,60,110,130,"Column1",100,#PB_ListIcon_CheckBoxes)
    ListIconGadget(#ListIcon_1,310,60,130,130,"Column1",100)
    ButtonGadget(#Button_0,180,210,110,30,"Übernahme")
    ButtonGadget(#Button_1,310,210,130,30,"Löschen")
  EndIf
EndIf


AddGadgetItem(#ListIcon_0,-1,"Erwin")
AddGadgetItem(#ListIcon_0,-1,"Paul")
AddGadgetItem(#ListIcon_0,-1,"Fred")
AddGadgetItem(#ListIcon_0,-1,"Hans")
AddGadgetItem(#ListIcon_0,-1,"SirCus")

Repeat
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget
    GadgetID = EventGadgetID()
    If GadgetID = #ListIcon_0
    ElseIf GadgetID = #ListIcon_1
    ElseIf GadgetID = #Button_0
      For I=0 To CountGadgetItems(#ListIcon_0)-1
        Debug Str(GetGadgetItemState(#ListIcon_0,I))+"  "+GetGadgetItemText(#ListIcon_0,I,0)
        If GetGadgetItemState(#ListIcon_0,I)=#PB_Listicon_checked Or GetGadgetItemState(#ListIcon_0,I)=#PB_Listicon_checked|#PB_Listicon_Selected
          AddGadgetItem(#ListIcon_1,-1,GetGadgetItemText(#ListIcon_0,I,0))
        EndIf
      Next I
    ElseIf GadgetID = #Button_1
      ClearGadgetItemList(#ListIcon_1)
    EndIf
    
  EndIf
Until Event = #PB_EventCloseWindow
End


Verfasst: 07.10.2004 16:26
von SirCus
NicTheQuick hat geschrieben:Wie wäre es damit:

Code: Alles auswählen

If GetGadgetItemState(#ListALRech, x) & #PB_ListIcon_Checked
Schonmal das Beispiel aus der Hilfe angeschaut?
jo so gehts, konnte aber mit dem & erst nichts anfangen.. & alleine sah komisch aus :)

Verfasst: 11.03.2006 18:07
von edel
Wenn man sehr viele Eintraege in der Liste hat ist so eine for schleife
aber nicht optimal .

Code: Alles auswählen

repeat 
a = sendmessage(gadgetid(id),#LVM_GETNEXTITEM,a,#LVNI_SELECTED)
until a = -1
edit : argh , falscher thread ... :-(