Problem mit dem Treegadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Problem mit dem Treegadget

Beitrag 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
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Beitrag von Deluxe0321 »

ahhh so geht das ^^ vielen dank :mrgreen:
Antworten