Seite 1 von 1
ListIconGadget feuert 2 Events?
Verfasst: 09.05.2014 14:38
von _JON_
Hallo Leute, sagt mal mach ich hier irgendwas falsch?
Wenn ich ins leere ListIconGadget klicke gibt er mir einmal eine Antwort, wie erwartet.
Doch klicke Ich auf Zeile1 oder Zeile1, antworted er 2mal
Code: Alles auswählen
OpenWindow(0, 0, 0, 480, 300, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(1, 10, 10, 400, 280, "Column 1", 100)
AddGadgetItem(1, -1, "Zeile1")
AddGadgetItem(1, -1, "Zeile2")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Debug GetGadgetState(1)
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
Re: ListIconGadget feuert 2 Events?
Verfasst: 09.05.2014 14:42
von RSBasic
Das ist normal. Es gibt in der Event-Verwaltung mehrere Events, die ausgelöst werden.
Um dein Problem beheben zu können, benutze EventType():
Code: Alles auswählen
OpenWindow(0, 0, 0, 480, 300, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(1, 10, 10, 400, 280, "Column 1", 100)
AddGadgetItem(1, -1, "Zeile1")
AddGadgetItem(1, -1, "Zeile2")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Select EventType()
Case #PB_EventType_LeftClick
Debug GetGadgetState(1)
EndSelect
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
Re: ListIconGadget feuert 2 Events?
Verfasst: 09.05.2014 14:45
von ts-soft
Code: Alles auswählen
EnableExplicit
OpenWindow(0, 0, 0, 480, 300, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(1, 10, 10, 400, 280, "Column 1", 100)
AddGadgetItem(1, -1, "Zeile1")
AddGadgetItem(1, -1, "Zeile2")
Define Event
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Select EventType()
Case #PB_EventType_Change
Debug "Change"
Case #PB_EventType_LeftClick
Debug "LeftClick"
EndSelect
Debug GetGadgetState(1)
Debug "--------------"
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
Re: ListIconGadget feuert 2 Events?
Verfasst: 09.05.2014 14:48
von _JON_
Wow, Danke für die schnelle Antwort
EventType() und #PB_EventType_Change war genau was ich vergessen hatte.
Re: ListIconGadget feuert 2 Events?
Verfasst: 20.06.2014 11:30
von _JON_
Also irgendwie hab ich schon wieder so ein Problem
Und zwar möchte ich diesmal wissen auf welche Check Box grade geklickt wurde.
Allerdings wird die Zeile dabei nicht ausgewählt, weshalb mir GetGadgetState(1) nicht das gewünschte Ergebnis liefert.
Code: Alles auswählen
EnableExplicit
OpenWindow(0, 0, 0, 480, 300, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(1, 10, 10, 400, 280, "Column 1", 100, #PB_ListIcon_CheckBoxes)
AddGadgetItem(1, -1, "Zeile1")
AddGadgetItem(1, -1, "Zeile2")
Define Event
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Select EventType()
Case #PB_EventType_Change
Debug "Change"
Case #PB_EventType_LeftClick
Debug "LeftClick"
EndSelect
Debug GetGadgetState(1)
Debug "--------------"
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
Re: ListIconGadget feuert 2 Events?
Verfasst: 20.06.2014 15:12
von HeX0R
Ja, das ist normal, siehe auch
diese Diskussion.
Das Problem ist, dass ein Anhaken einer Checkbox ja nicht zwangsläufig auch die ausgewählte Zeile ändern soll.
Von daher musst Du Dir da selbst was basteln.
Re: ListIconGadget feuert 2 Events?
Verfasst: 20.06.2014 15:41
von _JON_
Danke HeXOR, das ist genau was ich brauche.
Hab es mal etwas aktualisiert und poste es hier das Ich es auch später wiederfinde.
Code: Alles auswählen
EnableExplicit
#MyWindow = 0
#MyGadget = 1
Procedure myWindowCallback(hWnd, msg, wParam, lParam)
Protected result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_NOTIFY
Protected *NMLISTVIEW.NMLISTVIEW = lParam
Select *NMLISTVIEW\hdr\code
Case #LVN_ITEMCHANGED
*NMLISTVIEW.NMLISTVIEW = lParam
Select *NMLISTVIEW\uNewState >> 12 & $FFFF
Case 1
Debug "CheckBox #" + Str(*NMLISTVIEW\iItem) + " aktiviert!"
Case 2
Debug "CheckBox #" + Str(*NMLISTVIEW\iItem) + " deaktiviert!"
EndSelect
EndSelect
EndSelect
ProcedureReturn result
EndProcedure
Define event
If OpenWindow(#MyWindow, 100, 100, 350, 140, "ListIcon Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateStatusBar(0, WindowID(0))
ListIconGadget(#MyGadget, 5, 5, 340, 110, "Name", 100, #PB_ListIcon_CheckBoxes | #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(#MyGadget, 1, "Address", 250)
AddGadgetItem(#MyGadget, -1, "Harry Rannit" + Chr(10) + "12 Parliament Way, Battle Street, By the Bay")
AddGadgetItem(#MyGadget, -1, "Ginger Brokeit" + Chr(10) + "130 PureBasic Road, BigTown, CodeCity")
SetWindowCallback(@myWindowCallback())
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
EndIf