Treeview Problem

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Pebender

Betreff: Treeview Problem

BeitragSo, Aug 20, 2017 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich bin dabei mit dem Treeview zu experimentieren.

Folgender Code:
Code: [AUSKLAPPEN]
Import MaxGui.Drivers
SuperStrict

Local MyWindow:TGadget=CreateWindow("TreeView-Beispiel", 40,40,400,400)
Global MyTreeView:TGadget=CreateTreeView(5,0,200,330,MyWindow)
Global Parent:TGadget=TreeViewRoot(MyTreeView)
Local IconStrip:TIconStrip=LoadIconStrip("toolbar.bmp")

SetGadgetIconStrip(TreeViewRoot(MyTreeView), IconStrip)

EnumFiles(BlitzMaxPath(),MyTreeView)

Repeat
  WaitEvent()
  Select EventID()
  Case EVENT_WINDOWCLOSE
     End

  Case EVENT_GADGETACTION
        Local Node:TGadget = SelectedTreeViewNode(MyTreeView)
        Local s:String=String(Node.Context)
        If s>""
            EnumFiles(s,node)
            node.context=""
        EndIf
        ExpandTreeViewNode(node)

  End Select
Forever
End

Function EnumFiles:Int(Dir:String, Parent:TGadget)

  Local Folder:Int=ReadDir(Dir)
  Local File:String
  Local FullPath:String

  Repeat
      File=NextFile(Folder)
      If File=".." Or File="." Or File=Null Then
          'Do Nothing
      Else
          fullPath = RealPath(Dir+"/"+file)
          If FileType(FullPath)=FILETYPE_DIR Then
            Local handle:TGadget=AddTreeViewNode(file,TreeViewRoot(MyTreeView),1)
            handle.context=FullPath
          Else
              AddTreeViewNode(file,TreeViewRoot(MyTreeView),0)
          EndIf
      EndIf
  Until File=Null

End Function


So wird das Treeview angezeigt usw und so sofort.
Aber statt ein Verzeichnis auszuklappen, hängt er den Inhalt, der im Verzeichnis steht ganz unten an.
Aber warum ??
BMax & MaxGUI
 

CO2

ehemals "SirMO"

BeitragSo, Aug 20, 2017 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
In der Funktion EnumFiles fügst Du die Nodes immer zum Root hinzu, siehe BlitzMax: [AUSKLAPPEN]
AddTreeViewNode(file,TreeViewRoot(MyTreeView),1) 
und BlitzMax: [AUSKLAPPEN]
AddTreeViewNode(file,TreeViewRoot(MyTreeView),0)
Da müsste stattdessen Parent stehen (der Parameter, der in der Funktion übergeben wird).
Beim initialen Aufruf BlitzMax: [AUSKLAPPEN]
EnumFiles(BlitzMaxPath(),MyTreeView) 
Gibst Du dann als zweiten Parameter statt MyTreeView TreeViewRoot(MyTreeView) an und schon funktioniert es.

BlitzMax: [AUSKLAPPEN]
Import MaxGui.Drivers
SuperStrict

Local MyWindow:TGadget=CreateWindow("TreeView-Beispiel", 40,40,400,400)
Global MyTreeView:TGadget=CreateTreeView(5,0,200,330,MyWindow)
Global Parent:TGadget=TreeViewRoot(MyTreeView)
Local IconStrip:TIconStrip=LoadIconStrip("toolbar.bmp")

SetGadgetIconStrip(TreeViewRoot(MyTreeView), IconStrip)

EnumFiles(BlitzMaxPath(),TreeViewRoot(MyTreeView))

Repeat
WaitEvent()
Select EventID()
Case EVENT_WINDOWCLOSE
End

Case EVENT_GADGETACTION
Local Node:TGadget = SelectedTreeViewNode(MyTreeView)
Local s:String=String(Node.Context)
If s>""
EnumFiles(s,node)
node.context=""
EndIf
ExpandTreeViewNode(node)

End Select
Forever
End

Function EnumFiles:Int(Dir:String, Parent:TGadget)
Local Folder:Int=ReadDir(Dir)
Local File:String
Local FullPath:String

Repeat
File=NextFile(Folder)
If File=".." Or File="." Or File=Null Then
'Do Nothing
Else
fullPath = RealPath(Dir+"/"+file)
If FileType(FullPath)=FILETYPE_DIR Then
Local handle:TGadget=AddTreeViewNode(file,Parent,1)
handle.context=FullPath
Else
AddTreeViewNode(file,Parent,0)
EndIf
EndIf
Until File=Null
End Function
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Pebender

BeitragSo, Aug 20, 2017 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank,

das ist aus den Tutorial von Assari, bzw der Übersetzung von Simon Geisseler.
Bin halt nicht der Programmierer, muss immer wieder von vorn anfangen Sad .

mfg
BMax & MaxGUI

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group