Seite 1 von 3

ListIconGadget, checkboxes, Häkchen

Verfasst: 14.01.2009 15:07
von Andi
Ich habe im Forum gelernt, dass man via Callback auslesen kann, ob bei einem Eintrag in einem ListIconGadget das Häkchen der Checkbox entfernt oder gesetzt wurde. Man kann auch via Programm ein Häkchen setzen:

Code: Alles auswählen

SetGadgetItemState(#Gadget, Eintrag, #PB_ListIcon_Checked)
Meine Frage ist, ob man via Programm ein Häkchen auch entfernen kann. Gibt es eine Art Flag wie #PB_ListIcon_UnChecked?

Verfasst: 14.01.2009 15:26
von ts-soft

Code: Alles auswählen

 Define flag = #True
 
 If OpenWindow(0, 100, 100, 300, 150, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   ListIconGadget(0, 5, 5, 290, 90, "Name", 100, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_CheckBoxes)
   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")
   
   ButtonGadget(1, 100, 110, 100, 30, "change second")
   SetGadgetItemState(0, -1, #PB_ListIcon_Checked); alle gescheckt
   
   Repeat
     Select WaitWindowEvent()
      Case #PB_Event_CloseWindow : Break
      Case #PB_Event_Gadget
        If EventGadget() = 1 ; Button gedrückt
          flag ! 1
          If flag
            SetGadgetItemState(0, 1, #PB_ListIcon_Checked)
          Else
            SetGadgetItemState(0, 1, 0); zweiten zurücksetzen
          EndIf
        EndIf
     EndSelect
   ForEver
 EndIf

Verfasst: 14.01.2009 16:06
von Andi
Das ist es! Danke, ts-soft!

Verfasst: 14.01.2009 16:17
von Kiffi
ts-soft hat geschrieben:

Code: Alles auswählen

SetGadgetItemState(0, 1, 0); zweiten zurücksetzen
... wenngleich man dadurch einen evtl. vorhandenes #PB_ListIcon_Selected
verliert. ;-)

Grüße ... Kiffi

Verfasst: 15.01.2009 01:54
von Sven

Code: Alles auswählen

          If flag 
            SetGadgetItemState(0, 1, GetGadgetItemState(0, 1)  | #PB_ListIcon_Checked) 
          Else 
            SetGadgetItemState(0, 1, GetGadgetItemState(0, 1)  & ~#PB_ListIcon_Checked); zweiten zurücksetzen 
          EndIf
So vielleicht? Habs aber nicht ausprobiert.

Verfasst: 16.01.2009 17:46
von Andesdaf
gibt es eigentlich auch eine Möglichkeit, die Checkboxes während der Laufzeit
wieder zu entfernen?

Verfasst: 16.01.2009 18:34
von ts-soft
Andesdaf hat geschrieben:gibt es eigentlich auch eine Möglichkeit, die Checkboxes während der Laufzeit
wieder zu entfernen?
Tja, was macht den mein Code?
Oder meinste das ganze Gadget, das geht wie mit allen Gadgets :mrgreen:

Verfasst: 16.01.2009 18:36
von Dare Devil
ts-soft hat geschrieben:
Andesdaf hat geschrieben:gibt es eigentlich auch eine Möglichkeit, die Checkboxes während der Laufzeit
wieder zu entfernen?
Tja, was macht den mein Code?
Oder meinste das ganze Gadget, das geht wie mit allen Gadgets :mrgreen:
ich schaetze mal er meint, wie man die Checkboxes komplett entfernt...

Tja... das geht wohl nur mit API...

oder du speicherst alle Eintraage in Variablen, definierst das Gadget neu (ohne Checkboxes) und fuegst die Eintraege dann wieder neu ein.

Verfasst: 16.01.2009 18:39
von Andesdaf
> ich schaetze mal er meint, wie man die Checkboxes komplett entfernt...
genau. Werd mal a bissl rumsuchen.

Verfasst: 16.01.2009 18:40
von ts-soft
> ich schaetze mal er meint, wie man die Checkboxes komplett entfernt...
Diese Möglichkeit habe ich übersehen, weil mir da auch gerade kein Einsatz
für einfällt, gibts aber bestimmt. Ich denke mal das man per API den Style
entfernen muß und neuzeichnen (SetWindowLongPtr_, InvalideRect_)

Hab aber jetzt keine Lust das genauer zu erörtern, findet sich bestimmt jemand :wink: