Can anyone tell me if it is possible to edit tree gadget items? IE have a button to press to edit the selected tree gadget item
Thanks for reading
Craig
Hi Craig. As Shardik had pointed out, freak's method is ultimate. However, if you might prefer a non-API, cross-platform solution, try this one:sirrab wrote:Can anyone tell me if it is possible to edit tree gadget items? IE have a button to press to edit the selected tree gadget item...
Code: Select all
;========================================================
; A quick & dirty method for editable TreeGadget() items
;      
; a cross-platform solution by TI-994A
;
; 25th September 2014 - free to use, improve, share...
;========================================================
Enumeration 
  #mainWindow   
  #tree1
  #text1
EndEnumeration
;***************************************************
;a fully contained, ready-to-use TreeGadget() editor
;***************************************************
Procedure ediTree(parentWindow, treeGadgetNo, treeText.s)
  Enumeration #PB_Compiler_EnumerationValue
    #treeEditor
    #teString
  EndEnumeration
  
  DisableWindow(parentWindow, #True)
  OpenWindow(#treeEditor, DesktopMouseX(), DesktopMouseY(), 100, 20, "", 
             #PB_Window_BorderLess, WindowID(parentWindow))
  AddKeyboardShortcut(#treeEditor, #PB_Shortcut_Return, 1)
  AddKeyboardShortcut(#treeEditor, #PB_Shortcut_Escape, 2)
  StringGadget(#teString, 0, 0, 100, 20, treeText)
  SetGadgetColor(#teString, #PB_Gadget_BackColor, RGB(255, 255, 0))
  SetGadgetColor(#teString, #PB_Gadget_FrontColor, RGB(100, 0, 0))
  SetActiveGadget(#teString)
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Menu
        Select EventMenu()
          Case 1
            If Trim(GetGadgetText(#teString)) <> ""
              SetGadgetText(treeGadgetNo, Trim(GetGadgetText(#teString)))
            EndIf
            escaped = 1
          Case 2
            escaped = 1
        EndSelect
    EndSelect  
  Until escaped
  DisableWindow(parentWindow, #False)
  CloseWindow(#treeEditor)
EndProcedure
;*********
;demo code
;*********
wFlags = #PB_Window_SystemMenu | #PB_Window_ScreenCentered
If OpenWindow(#mainWindow, 0, 0, 180, 230, "TreeGadget", wFlags)
  TextGadget(#text1, 10, 10, 160, 40, "Double-click tree item to edit," + 
                                      #CRLF$ + "ENTER to set, ESC to cancel.")
  TreeGadget(#tree1, 10, 45, 160, 180)
  For populate = 0 To 9
    Read.s dataStr$
    AddGadgetItem (#tree1, -1, dataStr$)
  Next
  Repeat
    Select WaitWindowEvent() 
      Case #PB_Event_CloseWindow
        appQuit = 1
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #tree1
            Select EventType()
              Case #PB_EventType_LeftDoubleClick
              ;****************************************************
              ; simply call this as a function for any TreeGadget()
              ;****************************************************
                ediTree(#mainWindow, #tree1, GetGadgetText(#tree1))
              ;****************************************************
            EndSelect        
        EndSelect
    EndSelect
  Until appQuit = 1 
EndIf
DataSection
  Data.s "Albert Einstein", "Isaac Newton", "Charles Darwin", "Guglielmo Marconi", "Benjamin Franklin"
  Data.s "Galileo Galilei", "Leonardo da Vinci", "René Descartes", "Thomas Edison", "Alexander Graham Bell"
EndDataSectionCode: Select all
  If OpenWindow(0, 0, 0, 350, 300, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    StringGadget(0,10,10,150,20,"")
    TreeGadget(1, 10, 40, 160, 250)                                         ; TreeGadget standard
    TreeGadget(2, 180, 40, 160, 250, #PB_Tree_CheckBoxes | #PB_Tree_NoLines)  ; TreeGadget with Checkboxes + NoLines
    For ID = 1 To 2
      For a = 0 To 10
        AddGadgetItem (ID, -1, "Normal Item "+Str(a), 0, 0) ; if you want to add an image, use
        AddGadgetItem (ID, -1, "Node "+Str(a), 0, 0)        ; ImageID(x) as 4th parameter
        AddGadgetItem(ID, -1, "Sub-Item 1", 0, 1)    ; These are on the 1st sublevel
        AddGadgetItem(ID, -1, "Sub-Item 2", 0, 1)
        AddGadgetItem(ID, -1, "Sub-Item 3", 0, 1)
        AddGadgetItem(ID, -1, "Sub-Item 4", 0, 1)
        AddGadgetItem (ID, -1, "File "+Str(a), 0, 0) ; sublevel 0 again
      Next
    Next
    AddKeyboardShortcut(0,#PB_Shortcut_Control|#PB_Shortcut_E,10)
    AddKeyboardShortcut(0,#PB_Shortcut_Return,20)
    AddKeyboardShortcut(0,#PB_Shortcut_Escape,30)
  Repeat
    Select WaitWindowEvent()
       Case #PB_Event_CloseWindow
              Quit = 1
              
       Case #PB_Event_Menu
             Select EventMenu()
                  Case 10
                          If GetActiveGadget() = 1
                              Act = GetGadgetState(1)
                              SetGadgetItemColor(1,Act,#PB_Gadget_BackColor,$FF9933)
                              SetGadgetItemColor(1,Act,#PB_Gadget_FrontColor ,#White)
                              SetActiveGadget(0)
                          EndIf
                          
                  Case 20
                         If GetActiveGadget() = 0
                             SetGadgetItemColor(1,Act,#PB_Gadget_BackColor,#White)
                             SetGadgetItemColor(1,Act,#PB_Gadget_FrontColor ,#Black)
                             SetGadgetItemText(1,Act,GetGadgetText(0))
                             SetGadgetText(0,"")
                             SetActiveGadget(1)
                         EndIf
                         
                  Case 30
                          If GetActiveGadget() = 0
                              SetGadgetText(0,"")
                              SetActiveGadget(1)
                          EndIf
             EndSelect
             
       Case #PB_Event_Gadget
              Select EventGadget()
                       Case 0
              EndSelect
               
    EndSelect
  Until Quit = 1
  EndIf
Code: Select all
;=============================================================
; fully self-contained and ready to use - no changes required.
; just drop into your project and call ediTree(win#, tree#)
;=============================================================
Procedure ediTree(parentWindow, treeGadgetNo)
  DisableWindow(parentWindow, #True)
  treeText.s = GetGadgetText(treeGadgetNo)
  
  treeEditor = OpenWindow(#PB_Any, DesktopMouseX(), DesktopMouseY(), 100, 20, "", 
                          #PB_Window_BorderLess, WindowID(parentWindow))
  AddKeyboardShortcut(treeEditor, #PB_Shortcut_Return, 1)
  AddKeyboardShortcut(treeEditor, #PB_Shortcut_Escape, 2)
  teString = StringGadget(#PB_Any, 0, 0, 100, 20, treeText)
  SetGadgetColor(teString, #PB_Gadget_BackColor, RGB(255, 255, 0))
  SetGadgetColor(teString, #PB_Gadget_FrontColor, RGB(100, 0, 0))
  SetActiveGadget(teString)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Menu
        Select EventMenu()
          Case 1
            If Trim(GetGadgetText(teString)) <> ""
              SetGadgetText(treeGadgetNo, Trim(GetGadgetText(teString)))
            EndIf
            escaped = 1
          Case 2
            escaped = 1
        EndSelect
    EndSelect  
  Until escaped
  
  DisableWindow(parentWindow, #False)
  CloseWindow(treeEditor)
  
EndProcedureCode: Select all
ediTree(windowNumber, treeGadgetNumber) The color constants #White and #Black in your code are only defined in the Windows version. But a simpleRASHAD wrote:Color not supported in MAC
Code: Select all
  CompilerIf Defined(White, #PB_Constant) = #False
    #Black = 0
    #White = $FFFFFF
  CompilerEndIfUnfortunately you have to really test a seemingly cross-platform solution on all 3 operating systems to really be sure because even without any API functions there seem to exist subtle differences between the platforms. In both your examples you have to changeTI-994A wrote:However, if you might prefer a non-API, cross-platform solution, try this one:
Code: Select all
SetGadgetText(treeGadgetNo, Trim(GetGadgetText(#teString)))]Code: Select all
SetGadgetItemText(treeGadgetNo, GetGadgetState(treeGadgetNo), Trim(GetGadgetText(#teString)))Code: Select all
  Global Hlight
  Hlight = $FF9933
      
  If OpenWindow(0, 0, 0, 350, 300, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    StringGadget(0,0,0,0,0,"")
    TreeGadget(1, 10, 10, 160, 250)                                         ; TreeGadget standard
    TreeGadget(2, 180, 10, 160, 250, #PB_Tree_CheckBoxes | #PB_Tree_NoLines)  ; TreeGadget with Checkboxes + NoLines
    For ID = 1 To 2
      For a = 0 To 10
        AddGadgetItem (ID, -1, "Normal Item "+Str(a), 0, 0) ; if you want to add an image, use
        AddGadgetItem (ID, -1, "Node "+Str(a), 0, 0)        ; ImageID(x) as 4th parameter
        AddGadgetItem(ID, -1, "Sub-Item 1", 0, 1)    ; These are on the 1st sublevel
        AddGadgetItem(ID, -1, "Sub-Item 2", 0, 1)
        AddGadgetItem(ID, -1, "Sub-Item 3", 0, 1)
        AddGadgetItem(ID, -1, "Sub-Item 4", 0, 1)
        AddGadgetItem (ID, -1, "File "+Str(a), 0, 0) ; sublevel 0 again
      Next
    Next
    AddKeyboardShortcut(0,#PB_Shortcut_Return,20)
    AddKeyboardShortcut(0,#PB_Shortcut_Escape,30)
  Repeat                
     Select WaitWindowEvent()
       Case #PB_Event_CloseWindow
              Quit = 1              
              
       Case #PB_Event_Menu
             Select EventMenu()
                         
                  Case 20
                         If GetActiveGadget() = 0
                             SetGadgetItemText(1,Act,GetGadgetText(0))
                             SetGadgetText(0,"")
                             ResizeGadget(0,0,0,0,0)
                             SetActiveGadget(1)
                         EndIf
                         
                  Case 30
                          If GetActiveGadget() = 0
                              SetGadgetText(0,"")
                              ResizeGadget(0,0,0,0,0)
                              SetActiveGadget(1)
                          EndIf
             EndSelect
             
       Case #PB_Event_Gadget
              Select EventGadget()
                       Case 1
                              Select EventType()
                                    Case #PB_EventType_Change,#PB_EventType_LeftClick
                                             ResizeGadget(0,0,0,0,0)
                                             
                                    Case #PB_EventType_LeftDoubleClick
                                            Act = GetGadgetState(1)
                                            StartDrawing(WindowOutput(0))
                                                For y = 0 To 250
                                                     If Point(20,y) = Hlight Or Point(60,y) = Hlight
                                                         For x = 10 To 160
                                                              If Point(x,y) = Hlight
                                                                  Break
                                                              EndIf
                                                         Next
                                                         Break 
                                                      EndIf                                                        
                                                Next
                                                Width =  TextWidth(GetGadgetItemText(1,Act))
                                            StopDrawing()
                                            ResizeGadget(0,x,y,Width,18)
                                            SetGadgetText(0,GetGadgetItemText(1,Act))
                                            SetActiveGadget(0)
                              EndSelect                                    
              EndSelect             
               
    EndSelect
  Until Quit = 1
  EndIf
Code: Select all
;========================================================
; A quick & dirty method for editable TreeGadget() items
;      
; a cross-platform (?) solution by TI-994A - version 1.3
;
; 26th September 2014 - free to use, improve, share...
;========================================================
Enumeration 
  #mainWindow   
  #tree1
  #text1
EndEnumeration
;=============================================================
; fully self-contained and ready to use - no changes required.
; just drop into your project and call ediTree(win#, tree#)
;=============================================================
Procedure ediTree(parentWindowNo, treeGadgetNo)
  DisableWindow(parentWindowNo, #True)
  treeText.s = GetGadgetText(treeGadgetNo)
  
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Windows
      StartDrawing(WindowOutput(parentWindowNo))
        teStrWidth = TextWidth(GetGadgetItemText(treeGadgetNo, GetGadgetState(treeGadgetNo)))
        teStrHeight = TextHeight(GetGadgetItemText(treeGadgetNo, GetGadgetState(treeGadgetNo)))
        If teStrWidth < 100
          teStrWidth = 100
        EndIf
        xScanStart = WindowMouseX(parentWindowNo) - teStrWidth
        If xScanStart < 0
          xScanStart = 0
        EndIf
        yScanStart = WindowMouseY(parentWindowNo) - teStrHeight
        If yScanStart < 0
          yScanStart = 0
        EndIf
        For selectedX = xScanStart To (xScanStart + teStrWidth)
          For selectedY = yScanStart To (yScanStart + teStrHeight)
            If Point(selectedX, selectedY) = GetSysColor_(#COLOR_HIGHLIGHT)
              Break 2
            EndIf
          Next
        Next
        selectedX + WindowX(parentWindowNo, #PB_Window_InnerCoordinate)
        selectedY + WindowY(parentWindowNo, #PB_Window_InnerCoordinate)
      StopDrawing()  
    CompilerDefault
      teStrWidth = 100
      teStrHeight = 20
      selectedX = DesktopMouseX()
      selectedY = DesktopMouseY()
  CompilerEndSelect
  
  treeEditor = OpenWindow(#PB_Any, selectedX, selectedY, teStrWidth, teStrHeight, "", 
                          #PB_Window_BorderLess, WindowID(parentWindowNo))
  AddKeyboardShortcut(treeEditor, #PB_Shortcut_Return, 1)
  AddKeyboardShortcut(treeEditor, #PB_Shortcut_Escape, 2)
  teString = StringGadget(#PB_Any, 0, 0, teStrWidth, teStrHeight, treeText, #PB_String_BorderLess)
  SetGadgetColor(teString, #PB_Gadget_BackColor, RGB(255, 255, 0))
  SetGadgetColor(teString, #PB_Gadget_FrontColor, RGB(100, 0, 0))
  SetActiveGadget(teString)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Menu
        Select EventMenu()
          Case 1
            If Trim(GetGadgetText(teString)) <> ""
              SetGadgetItemText(treeGadgetNo, GetGadgetState(treeGadgetNo), Trim(GetGadgetText(teString)))
            EndIf
            escaped = 1
          Case 2
            escaped = 1
        EndSelect
    EndSelect  
  Until escaped
  
  DisableWindow(parentWindowNo, #False)
  CloseWindow(treeEditor)
  
EndProcedure
wFlags = #PB_Window_SystemMenu | #PB_Window_ScreenCentered
If OpenWindow(#mainWindow, 0, 0, 220, 250, "TreeGadget", wFlags)
  TextGadget(#text1, 10, 10, 200, 30, "Double-click the tree item to edit," + 
                                      #CRLF$ + "ENTER to set, ESC to cancel.")
  TreeGadget(#tree1, 10, 45, 200, 200, #PB_Tree_CheckBoxes)
  For populate = 0 To 9
    Read.s dataStr$
    AddGadgetItem (#tree1, -1, dataStr$)
    Read.s dataStr$
    AddGadgetItem (#tree1, -1, dataStr$, 0, 1)
    AddGadgetItem (#tree1, -1, "one more...", 0, 2)  
  Next
  
  Repeat    
    Select WaitWindowEvent() 
      Case #PB_Event_CloseWindow
        appQuit = 1
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #tree1
            Select EventType()
              Case #PB_EventType_LeftDoubleClick
                ;*****************************************************
                ; simply call this as a function for any TreeGadget()
                ;*****************************************************
                ediTree(#mainWindow, #tree1)
                ;*****************************************************
            EndSelect        
        EndSelect
    EndSelect
  Until appQuit = 1 
EndIf
DataSection
  Data.s "Albert Einstein", "e = mc2", "Isaac Newton", "Apple on the head?", "Charles Darwin", "Theory of evolution."
  Data.s "Guglielmo Marconi", "This is the BBC.", "Benjamin Franklin", "Flying kites in the rain?", "Galileo Galilei"
  Data.s "Starlight, star bright...", "Leonardo da Vinci", "Mona Lisa.", "René Descartes", "I think, therefore I am?"
  Data.s "Thomas Edison", "1% perspiration, 99% rip-off!", "Alexander Graham Bell", "Hello? Can you hear me?"
EndDataSectionCode: Select all
If OpenWindow(0, 0, 0, 400, 320, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StringGadget(0,0,0,0,0,"")
  SetGadgetColor(0,#PB_Gadget_BackColor,$82FEFD)
  SetGadgetColor(0,#PB_Gadget_FrontColor,$FD241F)
  SendMessage_(GadgetID(0), #EM_SETMARGINS, #EC_LEFTMARGIN, 2|0 << 16)
  TreeGadget(1, 10, 10, 200, 300,#PB_Tree_CheckBoxes)
    For a = 0 To 10
      AddGadgetItem (1, -1, "Normal Item "+Str(a), 0, 0)
      AddGadgetItem (1, -1, "Node "+Str(a), 0, 0)
      AddGadgetItem(1, -1, "Sub-Item 1", 0, 1)
      AddGadgetItem(1, -1, "Sub-Item 2", 0, 1)
      AddGadgetItem(1, -1, "Sub-Item 3", 0, 1)
      AddGadgetItem(1, -1, "Sub-Item 4", 0, 1)
      AddGadgetItem (1, -1, "File "+Str(a), 0, 0)
    Next
    
SetWindowLongPtr_(GadgetID(1), #GWL_STYLE, GetWindowLongPtr_(GadgetID(1), #GWL_STYLE) | #WS_CLIPSIBLINGS)
SetWindowPos_(GadgetID(1), #HWND_BOTTOM, -1, -1, -1, -1, #SWP_NOSIZE | #SWP_NOMOVE)
    
  Padx = GadgetX(1)+3
  Pady = GadgetY(1)+1
    
 AddKeyboardShortcut(0,#PB_Shortcut_Return,20)
 AddKeyboardShortcut(0,#PB_Shortcut_Escape,30)
      
r.RECT
Repeat
  Select WaitWindowEvent()
     
    Case #PB_Event_CloseWindow
      Quit = 1
      
    Case #PB_Event_Menu
     Select EventMenu()
                 
          Case 20
                 If GetActiveGadget() = 0
                     SetGadgetItemText(1,Act,GetGadgetText(0))
                     SetGadgetText(0,"")
                     ResizeGadget(0,0,0,0,0)
                     SetActiveGadget(1)
                 EndIf
                 
          Case 30
                  If GetActiveGadget() = 0
                      SetGadgetText(0,"")
                      ResizeGadget(0,0,0,0,0)
                      SetActiveGadget(1)
                  EndIf
      EndSelect         
                       
          Case #PB_Event_Gadget
            Select EventGadget()
              Case 1
                  Select EventType()
                      Case #PB_EventType_Change,#PB_EventType_LeftClick
                              ResizeGadget(0,0,0,0,0)
                              
                      Case #PB_EventType_LeftDoubleClick
                           Act = GetGadgetState(1)
                           r\left = GadgetItemID(1, Act)
                           SendMessage_(GadgetID(1),#TVM_GETITEMRECT,1,r)                           
                           ResizeGadget(0,r\left+Padx,r\top+Pady,100,18)
                           SetGadgetText(0,GetGadgetItemText(1,Act))
                           SetActiveGadget(0)
          
              EndSelect
      EndSelect
  EndSelect
Until Quit = 1
EndIf
Code: Select all
;========================================================
; A quick & dirty method for editable TreeGadget() items
;      
; a cross-platform (?) solution by TI-994A - version 1.4
;
; 27th September 2014 - free to use, improve, share...
;========================================================
Enumeration 
  #mainWindow   
  #tree1
  #text1
EndEnumeration
;=============================================================
; fully self-contained and ready to use - no changes required.
; just drop into your project and call ediTree(win#, tree#)
;=============================================================
Procedure ediTree(parentWindowNo, treeGadgetNo)
  
  DisableWindow(parentWindowNo, #True)
  treeText.s = GetGadgetText(treeGadgetNo)
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Windows
      teTextRect.RECT\left = GadgetItemID(treeGadgetNo, GetGadgetState(treeGadgetNo))
      SendMessage_(GadgetID(treeGadgetNo), #TVM_GETITEMRECT, #True, teTextRect)
      With teTextRect
        teStrWidth = (\right - \left)
        teStrHeight = (\bottom - \top)
        selectedX = \left + GadgetX(treeGadgetNo, #PB_Gadget_ScreenCoordinate) + 2
        selectedY = \top + GadgetY(treeGadgetNo, #PB_Gadget_ScreenCoordinate) + 2        
      EndWith
    CompilerDefault
      teStrWidth = 100
      teStrHeight = 20
      selectedX = DesktopMouseX()
      selectedY = DesktopMouseY()
  CompilerEndSelect
  
  treeEditor = OpenWindow(#PB_Any, selectedX, selectedY, teStrWidth, teStrHeight, "",
                          #PB_Window_BorderLess, WindowID(parentWindowNo))
  AddKeyboardShortcut(treeEditor, #PB_Shortcut_Return, 1)
  AddKeyboardShortcut(treeEditor, #PB_Shortcut_Escape, 2)
  teString = StringGadget(#PB_Any, 2, 1, teStrWidth, teStrHeight, treeText, #PB_String_BorderLess)
  SetWindowColor(treeEditor, RGB(255, 255, 0))
  SetGadgetColor(teString, #PB_Gadget_BackColor, RGB(255, 255, 0))
  SetGadgetColor(teString, #PB_Gadget_FrontColor, RGB(100, 0, 0))
  SetActiveGadget(teString)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Menu
        Select EventMenu()
          Case 1
            If Trim(GetGadgetText(teString)) <> ""
              SetGadgetItemText(treeGadgetNo, GetGadgetState(treeGadgetNo), Trim(GetGadgetText(teString)))
            EndIf
            escaped = 1
          Case 2
            escaped = 1
        EndSelect
    EndSelect  
  Until escaped
  
  DisableWindow(parentWindowNo, #False)
  CloseWindow(treeEditor)
  
EndProcedure
wFlags = #PB_Window_SystemMenu | #PB_Window_ScreenCentered
If OpenWindow(#mainWindow, 0, 0, 220, 250, "TreeGadget", wFlags)
  TextGadget(#text1, 10, 10, 200, 30, "Double-click the tree item to edit," + 
                                      #CRLF$ + "ENTER to set, ESC to cancel.")
  TreeGadget(#tree1, 10, 45, 200, 200)   ;, #PB_Tree_CheckBoxes)
  For populate = 0 To 9
    Read.s dataStr$
    AddGadgetItem (#tree1, -1, dataStr$)
    Read.s dataStr$
    AddGadgetItem (#tree1, -1, dataStr$, 0, 1)
    AddGadgetItem (#tree1, -1, "one more...", 0, 2)  
  Next
  
  Repeat    
    Select WaitWindowEvent() 
      Case #PB_Event_CloseWindow
        appQuit = 1
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #tree1
            Select EventType()
              Case #PB_EventType_RightClick
                treeEditFlag = 1
              Case #PB_EventType_LeftClick
                If treeEditFlag
                  ;*****************************************************
                  ; simply call this as a function for any TreeGadget()
                  ;*****************************************************
                  ediTree(#mainWindow, #tree1)
                  ;*****************************************************
                  treeEditFlag = 0
                EndIf
            EndSelect        
        EndSelect
    EndSelect
  Until appQuit = 1 
EndIf
DataSection
  Data.s "Albert Einstein", "e = mc2", "Isaac Newton", "Apple on the head?", "Charles Darwin", "Theory of evolution."
  Data.s "Guglielmo Marconi", "This is the BBC.", "Benjamin Franklin", "Flying kites in the rain?", "Galileo Galilei"
  Data.s "Starlight, star bright...", "Leonardo da Vinci", "Mona Lisa.", "René Descartes", "I think, therefore I am?"
  Data.s "Thomas Edison", "1% perspiration, 99% rip-off!", "Alexander Graham Bell", "Hello? Can you hear me?"
EndDataSectionHello again. You've solved the clipping issue with the string gadget, but it still does not scroll with the tree. Also, the first double-click to activate the editing works, but not consequent ones; the string gadget simply doesn't appear.RASHAD wrote:My last post just updated to solve some of your (special) remarks
Your last post need to be recoded again (lot of bugs)![]()
Tested with PB 5.30 x86 Win 8.1 x64
Code: Select all
Global EditFlag,Act
If OpenWindow(0, 0, 0, 400, 320, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  TreeGadget(0, 10, 10, 185, 300,#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
    
    TreeGadget(1, 205, 10,185, 300,#PB_Tree_CheckBoxes)
    For a = 0 To 10
      AddGadgetItem (1, -1, "Normal Item "+Str(a), 0, 0)
      AddGadgetItem (1, -1, "Node "+Str(a), 0, 0)
      AddGadgetItem(1, -1, "Sub-Item 1", 0, 1)
      AddGadgetItem(1, -1, "Sub-Item 2", 0, 1)
      AddGadgetItem(1, -1, "Sub-Item 3", 0, 1)
      AddGadgetItem(1, -1, "Sub-Item 4", 0, 1)
      AddGadgetItem (1, -1, "File "+Str(a), 0, 0)
    Next
    
 SetWindowLongPtr_(GadgetID(0),#GWL_STYLE, GetWindowLongPtr_(GadgetID(0),#GWL_STYLE) | #TVS_EDITLABELS)
    
Repeat
  Select WaitWindowEvent()
     
    Case #PB_Event_CloseWindow
      Quit = 1
      
    Case #WM_KEYDOWN
            If EditFlag = 1 And EventwParam() = 13
                SetGadgetItemText(0,Act,Text$)
                EditFlag = 0 
            EndIf    
      
    Case #WM_CHAR
            If EditFlag = 1
                 Text$ = Text$+ Chr(EventwParam())
            EndIf
                       
          Case #PB_Event_Gadget
            Select EventGadget()
              Case 0
                  Select EventType()                                                      
                      Case #PB_EventType_LeftDoubleClick
                           Act = GetGadgetState(0)
                           EditFlag = 1
                           Text$ = ""
                           SendMessage_(GadgetID(0),#TVM_EDITLABEL,0, GadgetItemID(0, Act)) 
              EndSelect
      EndSelect
  EndSelect
Until Quit = 1
EndIf