Site Announcements

Liebe Gäste des Forums, wir freuen uns, dass ihr zu uns gelangt seid.
Windev ist eine sehr umfangreiche und starke Entwicklerumgebung für Anwendungen unter Windows, Linux und Internetapplikationen inkl. Mobile.
Hier sind Antworten und Anregungen dazu zu finden!
Möchtest du aktiv mitschreiben? Dann melde dich durch Klick auf den Text "Registrieren" hier rechts oberhalb an.

Treeview

Gelöstes und einfache Beispiele

Treeview

Beitragvon Herbert » 31. Juli 2011, 11:04

Etwas schwerfällig ist das Verwalten der Treeview-Controls mit Dateien als Inhalt.
Ich will zu einem Produkt die in einem speziell dazu abgelegten Ordner (mit ev. Unterordnern) die Verzeichnisse und Daten dazu in einer Treeview darstellen.
Dabei will ich nicht den Pfad anzeigen, sondern nur die Dateinamen, denn der Ausgangsordner ist vorgegeben.
Schwerfällig ist dabei weniger das TreeView selber als die Befehle fListFile resp. fListDirectory, die den gefundenen inhalt als Textstring mit CR getrennt zurückgeben.
Will ich dabei zuletzt die Verzeichnisse anzeigen lassen, muss ich diese separiert festhalten und bei der Anzeige der Dateien im Stammverzeichnis auslassen.
Da habe ich den praktischen XBase-Befehl DIRECTORY vermisst.
Aber es gelingt (vielleicht zu kompliziert?), siehe Bild am Ende.

Code: Alles auswählen
   sbuf = NoSpace(EDT_Pfad)
   IF sbuf<>""
      sbuf = CompleteDir(sbuf)
   END
   IF sbuf<>"" THEN
      TreeAdd(TREE_Prospekt,sbuf)
      sDir = fListDirectory(sbuf,frInterruptible)
      FOR EACH STRING sDetDir OF sDir SEPARATED BY CR
         ArrayAdd(arrdirect,sDetDir)
      END      
      ResFileList = fListFile(sbuf+"*.*", frNotRecursive + frInterruptible)
      FOR EACH STRING AFile OF ResFileList SEPARATED BY CR     // die einzelnen Einträge ansehen
         bGef = False
         FOR i=1 _TO_ arrdirect..Occurrence
            IF arrdirect[i] = AFile THEN
               bGef = True
               BREAK
            END
         END
         IF NOT bGef THEN     // es ist kein Ordner, sondern eine Datei
            IF Position(AFile,sbuf) > 0 THEN
               sDetfile = Middle(AFile,Length(sbuf)+1)     // vorgelagerte Pfadangabe wegnehmen
            ELSE
               sDetfile = AFile
            END
            TreeAdd(TREE_Prospekt,sbuf+TAB+sDetfile)
         END
      END
      TreeExpand(TREE_Prospekt,sbuf)
                // hier folgt der Code für die Abarbeitung der Inhalte der Unterveerzeichnisse (in ähnlicher Manier)
                ...



Soll ein Klick auf einen Eintrag die Sache anzeigen, muss der Row Selection-Slot bedient werden:
Code: Alles auswählen
sbuf is string=""
sbuf = MySelf[MySelf]
IF NoSpace(sbuf)<>"" THEN
   ShellExecute(sbuf)
   IF ErrorOccurred THEN
//      Error(ErrorInfo())
      sbuf = Replace(sbuf,TAB,"")
      ShellExecute(sbuf)
   END
END
Dateianhänge
treedateien.PNG
treedateien.PNG (6.31 KiB) 5757-mal betrachtet
Herbert
Site Admin
 
Beiträge: 354
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Has thanked: 5 times
Have thanks: 3 times

Zurück zu Basics

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron