Seite 1 von 4

ListIconGadget und #PB_ListIcon_MultiSelect

Verfasst: 09.03.2009 14:03
von php-freak
Hallo,

folgendes Problem!

Ich hab ein List Icon Gadget mit dem Flag #PB_ListIcon_MultiSelect.

Nun würde ich gerne ALLE Elemente die der User gewählt hat ermitteln!

GetGadgetState() <<geht nicht! Bei nur einer angewählten Sache geht das aber sonnst gibt es immer null zurück (wenn mehrere angewählt wurden) egal wie oft man es aufruft!

Gibt es einen Befehl womit man alle Ermitteln kann?

Wenn ja wie lautet dieser?

Gruß

JENS

Verfasst: 09.03.2009 14:36
von hjbremer
ein Beispiel, mußt es halt anpassen

Code: Alles auswählen


Dim liste(0)
LV_AnzahlSelect(lvpbnr,liste()) 

Procedure LV_AnzahlSelect(pbnr, Array liste(1))      ;16.10.07

                  
   id = GadgetID(pbnr)
   
   ;suchanz = Anzahl der selektierten Zeilen
   suchanz = SendMessage_(id, #LVM_GETSELECTEDCOUNT, 0, 0)

   Dim liste(suchanz)       ;hier kommen die Zeilennummern hinein
   liste(0)=suchanz
   
   If suchanz > 0
        n=GetGadgetState(pbnr)  ;n ist die Startposi von #LVM_GETNEXTITEM
        liste(1)=n              ; darum müssen diese 2 Zeilen sein
        For j=2 To suchanz
             n = SendMessage_(id,#LVM_GETNEXTITEM,n,#LVNI_SELECTED)              
             liste(j) = n
        Next 
        ;For j=1 To suchanz:Debug liste(j):Next
    EndIf
        
EndProcedure

Verfasst: 09.03.2009 14:41
von php-freak
Bei mir gibst in der 2.- Zeilen nen Compiler Error!

Verfasst: 09.03.2009 14:44
von hjbremer
ich schrieb anpassen :mrgreen:

das Beispiel ist für 4.2

Verfasst: 09.03.2009 14:44
von ts-soft
Dafür braucht man keine API verwenden, und sollte man dann auch nicht
nutzen.

Code: Alles auswählen

CountGadgetItems()
GetGadgetItemState()

Verfasst: 09.03.2009 15:14
von hjbremer
und die Zeit geht ins Land bei 20000 Zeilen :allright:

Verfasst: 09.03.2009 15:31
von php-freak
CountGadgetItems()
GetGadgetItemState()

^^Damit geht es! Ihr habt recht!

Verfasst: 09.03.2009 15:48
von ts-soft
php-freak hat geschrieben:CountGadgetItems()
GetGadgetItemState()

^^Damit geht es nicht!
Naja, no comment :mrgreen:

Code: Alles auswählen

If OpenWindow(0, 100, 100, 400, 150, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(0, 5, 5, 390, 90, "Name", 100, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_MultiSelect)
  AddGadgetColumn(0, 1, "Address", 250)
  AddGadgetItem(0, -1, "Harry Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
  AddGadgetItem(0, -1, "Ginger Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
  AddGadgetItem(0, -1, "Max Mustermann"+Chr(10)+"Mustergasse 0815, Musterstadt")
  ButtonGadget(1, 10, 110, 80, 30, "Show Selected")
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow : Break
      Case #PB_Event_Gadget
        If EventGadget() = 1
          For I = 0 To CountGadgetItems(0) - 1
            If GetGadgetItemState(0, i) & #PB_ListIcon_Selected
              Debug GetGadgetItemText(0, i)
            EndIf             
          Next
        EndIf
    EndSelect
  ForEver
EndIf




Verfasst: 09.03.2009 15:50
von php-freak
Okay THX ts-soft!

Verfasst: 09.03.2009 16:07
von Falko
php-freak hat geschrieben:CountGadgetItems()
GetGadgetItemState()

^^Damit geht es! Ihr habt recht!
Wie wäre es damit, wenn du Dein Beispielsource von Dir
rein stellst?

Dann sehen wir, ob es wirklich nicht geht :mrgreen:

Gruß, Falko