Explorermäßiger Dateibrowser

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

4pac

Betreff: Explorermäßiger Dateibrowser

BeitragSo, Mai 08, 2005 23:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hat sich schonmal jemand die Mühe gemacht, einen explorermäßigen (also, wie der frühere Windows-Explorer) Dateibrowser in BlitzPlus zu coden, mit dem man durch die Verzeichnisstruktur seiner Festplatte(n) klicken kann?

Viele Grüße,
Thomas

dominik

BeitragMo, Mai 09, 2005 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
is glaub ich nicht allzu kompliziert zu proggen wenn mans rekursiv macht(anderst is es ja eigentlich auch garnicht möglich).
Frisst aber glaub ich ne menge speicher, für jeden ordner und alle dateien nen type eintrag zu erstellen. Wobei jeder der eintrag ja dann noch die größe / typ der datei/ erstellungsdatum/ .... usw beinhalten muss/sollte. Confused
und wenn man da dann von ner standart größe der heutigen HD's von min. 100 GB ausgeht????

Edit: noch komplizierter wirds dann glaub ich wenn man die Dateien noch graphisch im rechten kastl (hat des ne spezielle bezeichnung?), mit den jeweiligen icon, die ja auch noch gespeichert werdne müssen, darstellen will.
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof.

4pac

BeitragMo, Mai 09, 2005 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, soo schwer ist das nicht. Ich wollte bloß mal abchecken, ob das nicht vielleicht schon jemand fertig gecodet hat, dann könnte ich meinen Geist an Sinnvollerem wetzen. Ich hab das jetzt folgendermaßen gelöst (wobei die Größe des Fensters und der Gadgetkoordinaten ziemlich sinnlos sind):

BlitzBasic: [AUSKLAPPEN]

AutoSuspend False

Global iconstrip_directories = LoadIconStrip(\"gfx/iconstrip_directories.png\")
Global window1 = CreateWindow(\"\",x,y,895,540,0)
SetMinWindowSize window1,895,740

Global tab_grafik = CreatePanel(50,50,900,700,window1)
Global combobox_festplattenbrowser = CreateComboBox(200,30,190,20,tab_grafik)
Global listbox_verzeichnisbrowser = CreateListBox(200,55,190,130,tab_grafik)
SetGadgetIconStrip listbox_verzeichnisbrowser,iconstrip_directories
SetGadgetIconStrip combobox_festplattenbrowser,iconstrip_directories
Global listbox_dateibrowser = CreateListBox(395,30,225,180,tab_grafik)
Global anzeigefeld_pfad = CreateTextField(200,190,190,20,tab_grafik)
SetGadgetText anzeigefeld_pfad,ausgewaehltes_verzeichnis$

festplattenstruktur_einlesen()
verzeichnisstruktur_einlesen()
SetGadgetText anzeigefeld_pfad,CurrentDir$()

While Not KeyHit(1)

WaitEvent()
Select EventID()
Case $401 ; gadget event
Select EventSource()

Case listbox_verzeichnisbrowser :

ChangeDir CurrentDir$() + GadgetItemText(listbox_verzeichnisbrowser,SelectedGadgetItem(listbox_verzeichnisbrowser))
SetGadgetText anzeigefeld_pfad,CurrentDir$()
verzeichnisstruktur_einlesen()

Case combobox_festplattenbrowser :

ChangeDir GadgetItemText$(combobox_festplattenbrowser,SelectedGadgetItem(combobox_festplattenbrowser))
SetGadgetText anzeigefeld_pfad,CurrentDir$()
verzeichnisstruktur_einlesen()

End Select

End Select

Wend

.programm_ende
End

;###############################################

Function festplattenstruktur_einlesen()

;alle Buchstaben abchecken, ob sie als Laufwerksnamen existieren.
;wenn JA, dann reinpacken in die ComboBox
For i = 65 To 90
If FileType (Chr$(i) + \":\") = 2 Then AddGadgetItem combobox_festplattenbrowser ,Chr$(i) + \":\" ,0,0
Next

;schauen, welche Festplatte gemäß CurrentDir$() gerade in Benztung ist, und diese Selected setzen
For i = 0 To CountGadgetItems(combobox_festplattenbrowser)-1
If GadgetItemText$(combobox_festplattenbrowser,i) = Left$(CurrentDir$(),1) + \":\" Then SelectGadgetItem combobox_festplattenbrowser,i
Next

End Function


Function verzeichnisstruktur_einlesen()

ClearGadgetItems listbox_verzeichnisbrowser
ClearGadgetItems listbox_dateibrowser
leseverzeichnis = ReadDir(CurrentDir$())


Repeat
lesedatei$ = NextFile$(leseverzeichnis)
If lesedatei$ = \"\" Then Exit
If FileType(lesedatei$) = 2 And lesedatei$ <> \".\" Then AddGadgetItem listbox_verzeichnisbrowser,lesedatei$,0,1
If FileType(lesedatei$) = 1 And lesedatei$ <> \".\" Then AddGadgetItem listbox_dateibrowser,lesedatei$
Forever

CloseDir leseverzeichnis
End Function


".." hat man dann immer zuoberst in der Listbox und kommt mit Klick darauf eine Verzeichnisebene weiter runter. Wenn man die Iconstrips rauslässt, sollte das bei jedem funzen.

Viele Grüße,
Thomas

dominik

BeitragDi, Mai 10, 2005 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok so gehts natürlich auch ohne speicher. Praktischerweise hat Ojay dazu im Codearchiv ne passende delcs veröffentlichst mit der man das Erstellungsdatum auslesen kann.:
https://www.blitzforum.de/viewtopic.php?t=1223
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof.

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group