Italia
Fonte/ Codesnippets

Eines Füllen Laufwerkes Treeview Verzeichnisbaum

 

Nico
Madysa

 $H Windows.ph
 $H Messages.ph
 $I controls.prf
3 + 4 + 8

proc Add_Dir

    parameters pfad$ , rang% , p&
    declare i%[14] , nextdir$

    if (rang% < 0)

        p& = TV_AddItem(tv&,0,2,2,Laufwerk  + pfad$ + \,i#[t%])
        inc rang%
        inc t%

    endif

    ClearList
    ClearList lb&[rang%]
    AddFiles pfad$ + \*

    whileloop 0 , %GetCount

        Match$(^~[.+~]$,ListBoxItem$(&loop))

        if %MatchPos >= 0

            AddString(lb&[rang%],$Match)

        endif

    EndWhile

    DeleteString(lb&[rang%],SelectString(lb&[rang%],(-1),[.]))
    DeleteString(lb&[rang%],SelectString(lb&[rang%],(-1),[..]))
    ClearList
    MoveHandleToList(lb&[rang%])
    clear i%[rang%]

    while i%[rang%] < (GetCount(lb&[rang%]))

        nextdir$ = GetString$(lb&[rang%],i%[rang%])
        nextdir$ = Mid$(nextdir$,2,len(nextdir$) - 2)
        TV_AddItem(tv&,p&,0,1,nextdir$,i#[t%])
        inc t%

        if rang% < 14

            Add_Dir (pfad$ + \ + nextdir$) , (rang% + 1) , i#[t% - 1].hItem&

        endif

        i%[rang%] = i%[rang%] + 1

    wend

endproc

proc beenden

    FreeDLL shl&
    il#.Destroy()
    Dispose il#
    Dispose i#[]
    end

endproc

declare il# , tv& , tx& , shl& , i#[1999] , lb&[14] , t%
Dim i#[] , TV_Item
shl& = UseDll(SHELL32)
cls SysColor(15)
WindowTitle Bitte warten, erstelle Verzeichnisbaum...

whileloop 15

    lb&[&loop - 1] = Create(ListBox,%hWnd,1,0,0,0,0)

EndWhile

il# = New(ImageList)
il#.AddImage($SysPath + \Shell32.dll,3)
il#.AddImage($SysPath + \Shell32.dll,4)
il#.AddImage($SysPath + \Shell32.dll,8)
tv& = Create(Treeview,%hWnd,il#.hList&,5,5,200,400)
Add_Dir C: , (-1) , 0 <-- hier den Laufwerksbuchstaben/Anfangspfad eingeben; am Ende darf kein Backslash stehen
TV_Expand tv& , i#[0].hItem&
SetText %hWnd , str$(t%) +  Einträge im Treeview

whilenot IsKey(27)

    waitinput

wend

Beenden
end

Mit diesem Code wird ein Treeview erzeugt und durch Rekursion (bin ich stolz, dass ich das hinbekommen habe! ) mit allen Verzeichnissen eines Laufwerkes gefüllt. Leider ist das sehr umständlich und dauert ziemlich lange. Daher habe ich zwei Fragen:
1.) Wie viele Einträge enthält das Treeview bei euch maximal? (Steht nach dem Laden in der Titelleiste) Mir geht es darum, zu wissen, ob die Handles reichen.
2.) Gibt es nicht irgendeinen einfacheren Weg? In der Win32.hlp habe ich nichts gefunden und mit Assembler kenne ich mich sonderlich aus. Könnte man das so beschleunigen?

14 kB
Kurzbeschreibung: Die benötigte Include
Hochgeladen:25.04.2007
Downloadcounter180
Download
 
Nico Madysa
25.04.2007  
 




Hubert
Binnewies
Ich hätte es ja gerne getestet, aber leider habe ich nur XProfan 9.1...sorry...

Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
25.04.2007  
 




Jörg
Sellmeyer
Du solltest nicht alle Daten sofort einlesen, sondern erst bei Bedarf. Also immer nur die File auslesen, die gerade im aktuellen Ordner sind. Sonst mußt Du auch andauernd alles aktualisieren, wenn sich am Dateibestand was ändert.
Leider muß man dann auch so fiese Messages wie Klick auf Plus-/Minuszeichen vor dem Ordner abfangen.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
25.04.2007  
 



Du könntest meine addfiles.dll benutzen! Diese ist weitaus schneller und bietet ebenso Rekursion bis zum Abwinken. Aufgabe des XProfanprogrammes ist dann nur noch ein Loop zum Befüllen des TreeViews.
 
25.04.2007  
 



Übrigens - controls.prf solltest Du zum obigen Beispiel schon mitliefern - oder die DownloadURL angeben.
 
25.04.2007  
 




Frank
Abbing
Hm,

steigt bei mir nach kurzer Zeit aus mit dem Fehler: Das Element gibt es nicht. (Zeile 46)

Deine Lösung, die Icons aus der Shell32.dll zu laden, ist denkbar ungeeignet, weil die Icons so eine schlechte Qualität aufweisen. Ich würde in jedem Fall die System-Imageliste benutzen, dann erhälst du hochwertige Icons.
In meinem Listview.dll-Paket è sich meine Treeview.dll, die ebenfalls Verzeichnisse in einem Treeview listet. Sieh mal rein, so sollten die Icons aussehen. Ist auch eine sehr schnelle Lösung, da in Assembler erstellt.

Vielleicht hilft dir die Message WM_SETREDRAW, um deine Geschwindogkeit zu erhöhen.
 
25.04.2007  
 




Thomas
Freier
Hätte ich mir gerne angesehen.
Aber leider brechen alle Beispiele mit Fehler ab.
Listview.zip vom März 2007

96 kB
Hochgeladen:25.04.2007
Downloadcounter126
Download
 
Gruß Thomas
Windows XP SP2, XProfan X2
25.04.2007  
 




Frank
Abbing
Ach nö... hab die Codes heut Nachmittag doch noch selber getestet. Laufen sauber unter XP...
Bestimmt ist dein Programmeditor nicht auf den passenden Pfad eingestellt. Probierste mal feste Pfade oder $progdir?
 
25.04.2007  
 




Thomas
Freier
Glaube ich dir. Komme aber nicht weiter.
Anbei das Original mit $drive und einmal mit $ProgDir...https://xprofan.com/images/smiles/6.gif

679 kB
Hochgeladen:26.04.2007
Downloadcounter106
Download
 
Gruß Thomas
Windows XP SP2, XProfan X2
26.04.2007  
 




Frank
Abbing
Beide Exe funktionieren einwandfrei bei mir. Wüsste nicht, was ich da per dich tun potuto.
Würden das bitte noch weitere User testen?
 
26.04.2007  
 



@Frank
Beide DLL - (Listview.DLL und Treeview.DLL) funtionieren einwandfrei. Schliesslich sind wir Dir oft genug auf den Wecker gegangen, weil wieder mal jemand einen Bug fand oder einen Verbesserungsvorschlag hatte

Im Bild sieht man die gleichzeitige Benutzung der beiden DLL - Das Hauptfenster zeigt die Listview.dll mit allen relevanten Daten an. Im Vordergrund ist die Treeview.dll aktiv.

256 kB
Kurzbeschreibung: Demo - Adressor-2
Hochgeladen:26.04.2007
Downloadcounter122
Download
 
26.04.2007  
 




Carlo
Keil
Ich vermute einen Zusammenhang mit der Verzeichnisstruktur und damit mit der Rekursionstiefe.
Auf meinen C:-Laufwerk (Verzeichnisse und Verzeichnisschachtelungen fast ohne Ende) gibt es auch die Fehlermeldung Das Element gibt es nicht..
Auf meinem P:-Laufwerk (enthält nur meine komplettes Profan-Entwicklungssystem) klappt es ohne Fehlermeldung.

Saluto
Carlo
 
26.04.2007  
 




Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

20.390 Views

Untitledvor 0 min.
Member 862464125.04.2024
Uwe Lang02.07.2023
H.Brill30.01.2021
RudiB.02.03.2020
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie