Italia
Fonte/ Codesnippets

Eines Füllen Laufwerkes Treeview Verzeichnisbaum

 
- Page 1 -



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  
 



 
- Page 2 -


@Carlo

[offtopic]

Auf meinem P:-Laufwerk ...


Wieviel Laufwerke hast Du ? - 16 und mehr ? - Dann könntest Du per mich mal einen Test durchführen. - Ich komme bei meinen Laufwerken nur bis I: - Müsste aber meine Dateiverwaltung mit mehr wie 12 Laufwerken testen um die Darstellung zu kontrollieren - Einverstanden mit einem Test ?
[/offtopic]
 
26.04.2007  
 




Thomas
Freier
Hallo Frank,
auf dem PC (mit SP2) corre auch bei mir alles einwandfrei.
Auf dem Laptop (mit SP1) klappt nur die Treeview nicht. Explorer-Demo mit Listview ist OK. Hatte erst die ext. USB-Platte in Verdacht, änderte sich nicht nach dem Entfernen und Neustart.
 
Gruß Thomas
Windows XP SP2, XProfan X2
26.04.2007  
 




Carlo
Keil
Horst Horn
@Carlo

[offtopic]
Horst Horn
Auf meinem P:-Laufwerk ...


Wieviel Laufwerke hast Du ? - 16 und mehr ? [/offtopic]




Leider nein, aber ich stamme noch aus DOS-Zeiten
Und da gab es den schönen Befehl subst. Damit kann man sich prima Laufwerke machen, weil damit einem Pfad ein Laufwerksbuchstabe zugewiesen wird. Das ist sehr nützlich, wenn man z.B. auf zwei PCs mit unterschiedlichen Verzeichnisstrukturen (privater und dienstlicher PC) mit Profan arbeitet und nicht dauernd Pfad- oder Laufwerksbezeichnungen anpassen will.
Dank der Großzügigkeit von Bill (oder hat da jemand geschlafen?) gibt es den Befehl unter XP immer noch

HTH
Carlo
 
26.04.2007  
 



[offtopic]
Hallo Carlo
Schade - Da ich einen NC-Clone geschrieben habe und den auch nutze, hätte mich schon interessiert, wie die Programmschleife ab dem 14 Laufwerk arbeitet. Über jedem der zwei Fenster können in der ersten Reihe 13 Laufwerke erkannt und gezeigt werden (so wie im Bild) Ab dem 14. Laufwerk soll nun eine Etage tiefer wieder vorne begonnen werden. Zusätzlich müssen narürlich die beiden Fenster dann auch kleiner in der Höhe sein. Ich hab das schon mit der Eingabe 6 Laufwerke simuliert und es schien auch zu klappen. Lieber wäre mir aber schon ein realer Test [/offtopic]

32 kB
Hochgeladen:26.04.2007
Downloadcounter105
Download
 
26.04.2007  
 




GDL
Bei mir funzt es auch.

289 kB
Hochgeladen:26.04.2007
Downloadcounter178
Download
 
Windows7 Xprofan 8,9,10 [...]  [...] 
26.04.2007  
 



Leg einfach Laufwerke an Horst!

Start → Ausführen → %comspec% [enter] subst /? [enter]
 
26.04.2007  
 




Jörg
Sellmeyer
Hallo Horst,
Du kannst das ja selber mit beliebig vielen Laufwerken einrichten.
Einfach unter Start -> Ausführen so oft Subst M: C:Windows eingeben bis Du entweder genügend hast oder das Limit von 26 erreicht ist. Natürlich muß der Laufwerksbuchstabe immer ein anderer und ein freies Laufwerk sein. Du kannst auch andere Ordner als virtuelles Laufwerk nehmen aber das muß nicht sein.

Ok, iF war schneller
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
26.04.2007  
 



@ iF + Jörg
OK - und wie bekomme ich die Laufwerke wieder weg ?
 
26.04.2007  
 




Jörg
Sellmeyer
Subst /D M:
Nach einem Neustart sind aber sowieso alle wieder weg.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
26.04.2007  
 



Danke
Funktioniert
Siehe Bild

124 kB
Hochgeladen:26.04.2007
Downloadcounter184
Download
 
26.04.2007  
 




Nico
Madysa
OK, erstmal danke per die vielen Antworten.
Den Tip mit dem Laden der Ordner wenn es nötig ist, werde ich auf jeden Fall umsetzen (da mir schon so viele Leute dazu geraten haben )
AddFiles.dll und die Message werde ich mir auf jeden Fall auch ansehen.

Der Fehler Das Element gibt es nicht. ist einfach zu erklären: Der Code füllt die Element-Handles des Treeviews in ein Array, das ich vorläufig auf 2000 Handles begrenzt habe, aber das ist ja noch erweiterbar. Der zweite Fehler ist mir nicht erklärbar; durch das Abfangen von rang% sollte die maximale Rekursionstiefe eigentlich nicht überschritten werden. Aber wenn ich die Ordner erst zur Laufzeit lade, hätte sich das Problem sowieso erledigt.

@Frank: Wie komme ich an das Handle der System-Imagelist? Ohne dem komm ich eher schlecht an die Liste heran.
 
Nico Madysa
27.04.2007  
 



So wie ich das beim Überfliegen gesehen habe potuto rang% nicht immer den gewünschten Zweck erfüllen. Besser bei solchen Rekursionsgeschichten potuto folgendes sein:
KompilierenMarkierenSeparieren
27.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.371 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