Seite 1 von 1

Problem mit dem Treegadget

Verfasst: 19.05.2006 18:30
von Deluxe0321
Hi, ich habe Probleme mit dem Treegadget, ich will bei einem auf einen Eintrag alle höherliegenden Parents ausgeben lassen..

In der alten version von PB war das ganze ja kein problem, da hab ich im Code Archive folgenden Code gefunden:

Code: Alles auswählen

  
[...]
If GetGadgetState(#Path) <> -1
        CurrentItem.l = GetGadgetState(#Path)
        CurrentText.s = GetGadgetItemText(#Path, CurrentItem, 0)
  
        ItemToWalk.l = CurrentItem
        FullPath.s   = CurrentText.s
  
        Repeat
          hItem.l        = GadgetItemID(#Path, ItemToWalk)
          hParent.l      = SendMessage_(GadgetID(#Path), #TVM_GETNEXTITEM, #TVGN_PARENT, hItem)
          ParentNumber.l = TreeGadgetItemNumber(#Path, hParent)
          ParentText.s   = GetGadgetItemText(#Path, ParentNumber, 0)
          FullPath.s     = ParentText + "\" + FullPath
          ItemToWalk     = ParentNumber
        Until ItemToWalk = -1
  
        If Left(FullPath.s, 1) = "\"
          ;FullPath.s = Mid(FullPath.s, 2, Len(FullPath.s) - 1)
        EndIf
        ;Debug "Line:   " + Str()
        ;Debug "Child:  " + CurrentText
        FullPath.s=Right(FullPath.s,Len(FullPath.s)-1)
        Debug "PATH: "+FullPath.s
     EndIf   
[...]
So, aber leider gibt es ja in der Version 4 von Purebasic nicht mehr den Befehl TreeGadgetItemNumber(#Gadget, hParent). Welchen PB oder API befehl muss ich verwenden damit das ganze wieder Funktioniert?

Danke Deluxe0321

Verfasst: 19.05.2006 18:52
von edel

Code: Alles auswählen

  ;///////////////////////////
  ;/ Declare variables  
  Define   WindowTitle.s = "Test"
  Define   CX.l          = 420
  Define   CY.l          = 315
  Define  *hWindow.long
  Define  *hButton.long
  Define  *hTView.long 
  Define   WindowEvent.l
  Define  n.l , hItem.l
  Define  msg.s
  
  ;///////////////////////////
  ;/ Open window
  *hWindow = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,CX,CY,WindowTitle) 
  
  ;///////////////////////////
  ;/ Gadgets
  CreateGadgetList(*hWindow\l)
  *hTView   = TreeGadget(#pb_any,5,5,300,300)
  *hButton  = ButtonGadget(#pb_any,313,5,100,100,"bla")

  AddGadgetItem(*hTView,0,"parent",0,1)
  AddGadgetItem(*hTView,2,"Child",0,1)
  AddGadgetItem(*hTView,3,"Child",0,1)
  
  AddGadgetItem(*hTView,4,"parent2",0,0)
  AddGadgetItem(*hTView,6,"Child2",0,1)
  AddGadgetItem(*hTView,7,"Child2",0,1)  
  
  ;///////////////////////////
  ;/ Window eventloop
  Repeat
    WindowEvent = WaitWindowEvent()  
    
    IF WindowEvent = #PB_Event_Gadget
      
      If EventGadget() = *hButton
        
        n = GetGadgetState(*hTView)
        
        hItem = SendMessage_(*hTView\l,#TVM_GETNEXTITEM,#TVGN_PARENT,GadgetItemID(*hTView, n))
        
        buffer.s = space(100)
        tv.TV_ITEM
        tv\pszText    = @buffer
        tv\mask       = #TVIF_TEXT|#TVIF_HANDLE
        tv\hItem      = hItem
        tv\cchTextMax = 100
        
        SendMessage_(*hTView\l,#TVM_GETITEM,0,tv)
        
        Debug buffer
        
      Endif 
      
    Endif 
    
  Until WindowEvent = #WM_CLOSE
  
  ;///////////////////////////
  ;/ Exit application
  End

Verfasst: 20.05.2006 13:08
von Deluxe0321
ahhh so geht das ^^ vielen dank :mrgreen: