Ich habe hier einen Fehler in der Pure Basic Hilfedatei (alle Sprachen) gefunden.
Ich kann es leider nicht in den anderen Sprachen veröffentlichen, da ich nur Deutsch und PureBasic kann.
Im Kapitel GetGadgetItemState (PB 4.60 Windows) steht:
Beispiel 
letzter Absatz
Code: Alles auswählen
  If GetGadgetItemState(#Listicon, n) & #PB_ListIcon_Checked | #PB_ListIcon_Selected
    ; Eintrag n ist abgehakt ODER ausgewählt ODER beides 
  EndIf
Die Abfrage reagiert jedoch auch, wenn kein Eintrag abgehakt ODER ausgewählt ist.
Das liegt daran, dass der Prioritäts-Level der Operatoren "&" und "|" gleich ist.
Die Konstanten "#PB_ListIcon_Checked | #PB_ListIcon_Selected" müssen in Klammern gesetzt werden.
Im vorletzten Absatz müssen die Konstanten jedoch nicht in Klammern gesetzt werden, 
da der Prioritäts-Level des Operators "=" kleiner ist als der des Operators "|".
Mein Vorschlag ist, die erste Zeile des letzten Absatzes so zu ändern:
  
Code: Alles auswählen
If GetGadgetItemState(#Listicon, n) & (#PB_ListIcon_Checked | #PB_ListIcon_Selected)
 
 
Hier ein kleines Beispiel zum Testen. 
Code: Alles auswählen
Enumeration
  #Listicon
EndEnumeration
If OpenWindow(0, 0, 0, 440, 200, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(#Listicon,  10, 10, 420, 180, "Column 1", 100, #PB_ListIcon_CheckBoxes | #PB_ListIcon_MultiSelect) ; ListIcon mit Mehrfachselektion
  For b = 2 To 4
    AddGadgetColumn(#Listicon, b, "Column " + Str(b), 100)
  Next
  For b = 0 To 4
    AddGadgetItem(#Listicon, b, "Item 1"+Chr(10)+"Item 2"+Chr(10)+"Item 3"+Chr(10)+"Item 4")
  Next
  Repeat 
    
    Event = WaitWindowEvent() 
    If Event = #PB_Event_Gadget
      
      If GadgetID = #ListIcon
        ClearDebugOutput()
        For n = 0 To 4
          ; ... hier ein Ausschnitt aus einer WaitWindowEvent() - Ereignisschleife:
          If GetGadgetItemState(#Listicon, n) & #PB_ListIcon_Checked
            ; Eintrag n ist abgehakt (egal ob ausgewählt oder nicht) 
            Debug "Eintrag " + Str(n) + " ist abgehakt (egal ob ausgewählt oder nicht)" 
          Else
            Debug ""
          EndIf 
          
          If GetGadgetItemState(#Listicon, n) & #PB_ListIcon_Selected
            ; Eintrag n ist ausgewählt (egal ob abgehakt oder nicht) 
            Debug "Eintrag " + Str(n) + " ist ausgewählt (egal ob abgehakt oder nicht)" 
          Else
            Debug ""
          EndIf 
          
          If GetGadgetItemState(#Listicon, n) = #PB_ListIcon_Checked | #PB_ListIcon_Selected 
            ; Eintrag n ist abgehakt UND ausgewählt
            Debug "Eintrag " + Str(n) + " ist abgehakt UND ausgewählt" 
          Else
            Debug " "
          EndIf 
          
          If GetGadgetItemState(#Listicon, n) & #PB_ListIcon_Checked | #PB_ListIcon_Selected
            ; Eintrag n ist abgehakt ODER ausgewählt ODER beides 
            Debug "Eintrag " + Str(n) + " ist abgehakt ODER ausgewählt ODER beides" 
          EndIf
          
          If GetGadgetItemState(#Listicon, n) & (#PB_ListIcon_Checked | #PB_ListIcon_Selected)
            ; Eintrag n ist abgehakt ODER ausgewählt ODER beides 
            Debug "Eintrag " + Str(n) + " ist wirklich abgehakt ODER ausgewählt ODER beides" 
          Else
            Debug " "
          EndIf
          Debug "-------------------------"  
        Next n
        
      EndIf
      
    EndIf
    
  Until Event = #PB_Event_CloseWindow
EndIf
 
__________________________________________________
Code-Tags hinzugefügt
09.01.2012
RSBasic