Cannot get checkbox state

Just starting out? Need help? Post your questions and find answers here.
LiK137
Enthusiast
Enthusiast
Posts: 282
Joined: Wed Jun 23, 2010 5:13 pm

Cannot get checkbox state

Post by LiK137 »

Hi,
in the below piece of code cannot get checkbox event change in event handler.
Only by checking all checkbox status to get changed ones.

Code: Select all

 Procedure AddCheckedTab(GadgetNo, TabTitle.s, TabPos = -1, ChkPos = -1, SpacePadding = 3)
  Protected r.RECT, cbtrim, chkXPos, chkYPos
   
  If SpacePadding < 0
    SpacePadding = 3
  EndIf  
  
  If ChkPos = -1 
    TabTitle = Space(SpacePadding) + TabTitle
  Else
    TabTitle = TabTitle + Space(SpacePadding)
  EndIf  
  
  OpenGadgetList(GadgetNo)
  
  AddGadgetItem(GadgetNo, TabPos, TabTitle)
  
  CloseGadgetList()
  
  If TabPos = -1
    TabPos = CountGadgetItems(GadgetNo) - 1
  EndIf
  
  SendMessage_(GadgetID(GadgetNo),#TCM_GETITEMRECT,TabPos,r.RECT)
  
  If ChkPos = -1 
    chkXPos = r\left+5
  Else
    chkXPos = r\right-20
  EndIf  
  
  cbtrim = (r\bottom-r\top -15)/2
  chkYPos = GadgetY(GadgetNo)+r\top+cbtrim
  
  Protected chkBoxGadgetID = CheckBoxGadget(#PB_Any, chkXPos,chkYPos,15,15,"")
  BringWindowToTop_(GadgetID(chkBoxGadgetID))
  DisableGadget(chkBoxGadgetID,1)
  
  ProcedureReturn chkBoxGadgetID
 EndProcedure


LoadFont(0,"Tahoma",12)
OpenWindow(0, 0, 0, 400, 300, "Check to Tab", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)       
 PanelGadget(1,5,5,390,290)
 SetGadgetFont(1,FontID(0)) 
 chkTab1 = AddCheckedTab(1, "Tab1", -1, -1, 3)
 chkTab2 = AddCheckedTab(1, "Tab2", -1, -1, 3)
 chkTab3 = AddCheckedTab(1, "Tab3", -1,  1, 3)
 
 Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Quit = 1
     
    Case #PB_Event_Gadget
      Debug "____TrapEveryGadgetEventToGetCheckBoxState____"
      Debug GetGadgetState(chkTab1)
      Debug GetGadgetState(chkTab2)
      Debug GetGadgetState(chkTab3)
      Debug "------------"
      Select EventGadget()
        Case chkTab1
          Debug "____NeverCaught_____"
          Debug GetGadgetState(chkTab1)
          Debug "------------"
        Case chkTab2
          Debug "____NeverCaught_____"
          Debug GetGadgetState(chkTab2)
          Debug "------------"
        Case chkTab3
          Debug "____NeverCaught_____"
          Debug GetGadgetState(chkTab3)
          Debug "------------"
        Case 1
          Select EventType()
            Case #PB_EventType_Change
              state = GetGadgetState(1)
              Debug state
              
              If state = 0
                DisableGadget(chkTab1,0)
                DisableGadget(chkTab2,1)
                DisableGadget(chkTab2,1)
              EndIf
              
              If state = 1
                DisableGadget(chkTab1,1)           
                DisableGadget(chkTab2,0)
                DisableGadget(chkTab3,1)
              EndIf           
              
              If state = 2
                DisableGadget(chkTab1,1)
                DisableGadget(chkTab2,1)
                DisableGadget(chkTab3,0)         
              EndIf
              
          EndSelect
         
      EndSelect   
  EndSelect
Until Quit = 1
End
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4660
Joined: Sun Apr 12, 2009 6:27 am

Re: Cannot get checkbox state

Post by RASHAD »

CheckBoxGadget() do not trigger any event

Code: Select all

Procedure IsMouseOver(hWnd) 
  GetWindowRect_(hWnd,r.RECT) 
  GetCursorPos_(p.POINT) 
  Result = PtInRect_(r,p\y << 32 + p\x) 
  ProcedureReturn Result 
EndProcedure
 .
 .
 .
 Repeat
  .
  .  
    Case #WM_LBUTTONUP
      If IsMouseOver(GadgetID(chkTab1))
        Debug GetGadgetState(chkTab1)
      ElseIf  IsMouseOver(GadgetID(chkTab2))
        Debug GetGadgetState(chkTab2)
      ElseIf  IsMouseOver(GadgetID(chkTab3))
        Debug GetGadgetState(chkTab3)
      EndIf

Egypt my love
LiK137
Enthusiast
Enthusiast
Posts: 282
Joined: Wed Jun 23, 2010 5:13 pm

Re: Cannot get checkbox state

Post by LiK137 »

Wow, thanks, didn't know.
Thanks for information.
Post Reply