[ TreeGadget ] How to detect if the user clicked on an item or clicked on the white area?

Just starting out? Need help? Post your questions and find answers here.
User avatar
skinkairewalker
Enthusiast
Enthusiast
Posts: 627
Joined: Fri Dec 04, 2015 9:26 pm

[ TreeGadget ] How to detect if the user clicked on an item or clicked on the white area?

Post by skinkairewalker »

Hello Guys !
Have a way to detect if the user clicked on an item or clicked on the white area?
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4636
Joined: Sun Apr 12, 2009 6:27 am

Re: [ TreeGadget ] How to detect if the user clicked on an item or clicked on the white area?

Post by RASHAD »

Hi
For Windows

Code: Select all

If OpenWindow(0, 0, 0, 400, 600, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  TreeGadget(0, 10, 10, 380, 580,#PB_Tree_CheckBoxes)
  For a = 0 To 10
    AddGadgetItem (0, -1, "Normal Item "+Str(a), 0, 0)
    AddGadgetItem (0, -1, "Node "+Str(a), 0, 0)
    AddGadgetItem(0, -1, "Sub-Item 1", 0, 1)
    AddGadgetItem(0, -1, "Sub-Item 2", 0, 1)
    AddGadgetItem(0, -1, "Sub-Item 3", 0, 1)
    AddGadgetItem(0, -1, "Sub-Item 4", 0, 1)
    AddGadgetItem (0, -1, "File "+Str(a), 0, 0)
  Next
  
  r.RECT
  Repeat
    Select WaitWindowEvent()
        
      Case #PB_Event_CloseWindow
        Quit = 1        
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 0
            Select EventType()
              Case #PB_EventType_LeftClick
                r\left = GadgetItemID(0, GetGadgetState(0))
                SendMessage_(GadgetID(0),#TVM_GETITEMRECT,1,r)
                GetCursorPos_(p.POINT)
                ScreenToClient_ (GadgetID(0), p)
                If p\x > r\right Or p\x < r\left Or p\y > r\bottom Or p\y < r\top
                  Debug "Out"
                Else
                  Debug GetGadgetState(0)
                EndIf                
                
            EndSelect
        EndSelect
    EndSelect
  Until Quit = 1
EndIf
Egypt my love
User avatar
skinkairewalker
Enthusiast
Enthusiast
Posts: 627
Joined: Fri Dec 04, 2015 9:26 pm

Re: [ TreeGadget ] How to detect if the user clicked on an item or clicked on the white area?

Post by skinkairewalker »

Awesome !!!
Thanks :D
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4636
Joined: Sun Apr 12, 2009 6:27 am

Re: [ TreeGadget ] How to detect if the user clicked on an item or clicked on the white area?

Post by RASHAD »

You are welcome
You can also change to for speed

Code: Select all

     Case #PB_Event_Gadget
        Select EventGadget()
          Case 0
            Select EventType()
              Case #PB_EventType_LeftClick
                r\left = GadgetItemID(0, GetGadgetState(0))
                SendMessage_(GadgetID(0),#TVM_GETITEMRECT,1,r)
                GetCursorPos_(p.POINT)
                ScreenToClient_ (GadgetID(0), p)
                If PtInRect_(r,p\y << 32 + p\x)
                  Debug GetGadgetState(0)
                Else
                  Debug "Out"
                EndIf                
                
            EndSelect
Egypt my love
Post Reply