ListIconGadget in PanelGadget

Just starting out? Need help? Post your questions and find answers here.
Lima
User
User
Posts: 43
Joined: Tue Jul 14, 2015 2:52 pm

ListIconGadget in PanelGadget

Post by Lima »

This small piece of code presents a problem for which it asked for help from the community.

By clicking on a Listicon row / column the event is detected twice if the row / column is selectable. In ListIconGadget 10 if you click on column zero the event is detected twice, if you click on column 1 the event is only detected once. ListIconGadget 20 is always detected twice.

Can someone help me clarify what is wrong ?

Thank you very much in advance.

Code: Select all

If OpenWindow(0, 0, 0, 822, 620,  "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    PanelGadget(0, 8, 8, 800, 600)
    AddGadgetItem (0, -1, "Panel 1")
        
       ListIconGadget(20,10, 50, 290, 190, "Name", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
   AddGadgetColumn(20, 1, "Address", 250)
   AddGadgetItem(20, -1, "Harry "+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
   AddGadgetItem(20, -1, "Ginger"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
 ButtonGadget(12, 10, 300, 80, 24,"Button 12")
ButtonGadget(13, 95, 300, 80, 24,"Button 13")
    

      AddGadgetItem (0, -1,"Panel 2")

        ButtonGadget(2, 10, 15, 80, 24,"Button 2")
        ButtonGadget(3, 95, 15, 80, 24,"Button 3")
       ListIconGadget(10,50, 50, 290, 190, "Name", 100)
   AddGadgetColumn(10, 1, "Address", 250)
   AddGadgetItem(10, -1, " Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
   AddGadgetItem(10, -1, "Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")

    CloseGadgetList()
    Repeat 
      Event = WaitWindowEvent()
  
        Select Event
     
       Case #PB_Event_Gadget
        Select EventGadget()
         
         
           Case 12
             MessageRequester("", "Button 12 clicked!")
           Case 13 
             MessageRequester("", "Button   13   clicked!")
           Case 20 
            
               MessageRequester("", "Listicon  20  clicked!"+Chr(10)+Str(GetGadgetState(20)))

           Case 2
             MessageRequester("", "Button 2 clicked!")
           Case 3 
             MessageRequester("", "Button   3   clicked!")
             Case 10 
               MessageRequester("", "Listicon  10   clicked!")
               
                       
        EndSelect
 EndSelect
  
    Until Event = #PB_Event_CloseWindow
  EndIf
User avatar
Fig
Enthusiast
Enthusiast
Posts: 352
Joined: Thu Apr 30, 2009 5:23 pm
Location: Côtes d'Azur, France

Re: ListIconGadget in PanelGadget

Post by Fig »

Actually, you detect 2 different event: you get the focus on the gadget and you get the leftclick. You have to discriminate them by using EventType().
You should have a look at EventType() in help file.
You may also use BindGadgetEvent() if you want... It's easier to handle event (but you don't have to, it's your choice....)

Code: Select all

If OpenWindow(0, 0, 0, 822, 620,  "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    PanelGadget(0, 8, 8, 800, 600)
    AddGadgetItem (0, -1, "Panel 1")
       
       ListIconGadget(20,10, 50, 290, 190, "Name", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
   AddGadgetColumn(20, 1, "Address", 250)
   AddGadgetItem(20, -1, "Harry "+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
   AddGadgetItem(20, -1, "Ginger"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
 ButtonGadget(12, 10, 300, 80, 24,"Button 12")
ButtonGadget(13, 95, 300, 80, 24,"Button 13")
   

      AddGadgetItem (0, -1,"Panel 2")

        ButtonGadget(2, 10, 15, 80, 24,"Button 2")
        ButtonGadget(3, 95, 15, 80, 24,"Button 3")
       ListIconGadget(10,50, 50, 290, 190, "Name", 100)
   AddGadgetColumn(10, 1, "Address", 250)
   AddGadgetItem(10, -1, " Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
   AddGadgetItem(10, -1, "Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")

    CloseGadgetList()
    Repeat
      Event = WaitWindowEvent()
 
        Select Event
     
       Case #PB_Event_Gadget
        Select EventGadget()
         
         
           Case 12
             MessageRequester("", "Button 12 clicked!")
           Case 13
             MessageRequester("", "Button   13   clicked!")
           Case 20 
              If EventType()=#PB_EventType_LeftClick
                MessageRequester("", "Listicon  20  clicked!"+Chr(10)+Str(GetGadgetState(20)))
              EndIf

           Case 2
             MessageRequester("", "Button 2 clicked!")
           Case 3
             MessageRequester("", "Button   3   clicked!")
             Case 10
               MessageRequester("", "Listicon  10   clicked!")
               
                       
        EndSelect
 EndSelect
 
    Until Event = #PB_Event_CloseWindow
  EndIf
There are 2 methods to program bugless.
But only the third works fine.

Win10, Pb x64 5.71 LTS
Lima
User
User
Posts: 43
Joined: Tue Jul 14, 2015 2:52 pm

Re: ListIconGadget in PanelGadget

Post by Lima »

Ok Fig.
Thank you very much.
I now understand the reason for the two events.
Thanks again.
Post Reply