Datei Browser
Übersicht

![]() |
FreetimeCoderBetreff: Datei Browser |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi @ all!
Ich habe gestern einen Dateibroswer von mir ausgegraben, nun ja der Rest steht im Code, viel Spaß damit ![]() Code: [AUSKLAPPEN] ;Datei-Browser für B3D ;Von FreetimeCoder ;(c) by Niemandem ;Macht damit was ihr wollt. Das ist wahrscheinlich nicht die beste Lösung, ;aber man kann schön sehen wie ein Browser funktioniert. Wenn ihr was ;zu verbessern habt, dürft ihr gerne was umprogrammieren. Die Bilder, die ;im Code erstellt werden, sollten durch LoadImage() ersetzt werden (Damit ;die besser aussehen) ;Dann noch viel Spaß damit. ;>>>>>>>>>>>www.freetimestudio.de.vu<<<<<<<<<<<<<< Graphics 260,480,0,2 SetBuffer BackBuffer() AppTitle "Verzeichnis öffnen" ;Icons erstellen Dir=CreateImage(10,15) FilePic=CreateImage(10,15) TxtPic=CreateImage(10,15) Button_open=CreateImage(130,30,2) Button_abbord=CreateImage(130,30,2) Mouse=CreateImage(20,20) ScrollUP=CreateImage(20,30,2) ScrollDown=CreateImage(20,30,2) ;Scroll Hoch Bild Inaktiv Color 255,0,0 Rect 0,0,20,30 Color 0,0,0 Line 0,29,20,29 Line 0,30,20,30 For i=0 To 10 Line i,0,0,20 Next For i=10 To 20 Line i,0,20,20 Next CopyRect 0,0,20,30,0,0,BackBuffer(),ImageBuffer(ScrollUP,0) Cls ;Scroll Hoch Bild Aktiv Color 0,255,0 Rect 0,0,20,30 Color 0,0,0 Line 0,29,20,29 Line 0,30,20,30 For i=0 To 10 Line i,0,0,20 Next For i=10 To 20 Line i,0,20,20 Next CopyRect 0,0,20,30,0,0,BackBuffer(),ImageBuffer(ScrollUP,1) Cls ;Scroll Runter Bild Inaktiv Color 255,0,0 Rect 0,0,20,30 Color 0,0,0 Line 0,0,20,0 Line 0,1,20,1 For i=0 To 10 Line 0,10,i,30 Next For i=10 To 20 Line 20,10,i,30 Next CopyRect 0,0,20,30,0,0,BackBuffer(),ImageBuffer(ScrollDown,0) Cls ;Scroll Runter Bild Aktiv Color 0,255,0 Rect 0,0,20,30 Color 0,0,0 Line 0,0,20,0 Line 0,1,20,1 For i=0 To 10 Line 0,10,i,30 Next For i=10 To 20 Line 20,10,i,30 Next CopyRect 0,0,20,30,0,0,BackBuffer(),ImageBuffer(ScrollDown,1) Cls ;Maus Bild Color 255,0,0 Line 0,0,10,10 Line 0,0,0,10 Line 0,10,10,10 Line 7,10,12,20 Line 3,10,9,20 Line 10,19,12,19 CopyRect 0,0,20,20,0,0,BackBuffer(),ImageBuffer(Mouse,0) Cls ;Schließen Button Inaktiv Color 155,155,155 Rect 0,0,130,30,1 Color 10,10,10 Rect 2,2,126,26,0 Rect 0,0,130,30,0 Text 130/2,30/2,"Abbrechen",1,1 CopyRect 0,0,130,30,0,0,BackBuffer(),ImageBuffer(Button_abbord,0) MaskImage Button_abbord,255,0,255 Cls ;Schließen Button Aktiv Color 100,100,100 Rect 0,0,130,30,1 Color 10,10,10 Rect 0,0,130,30,0 Rect 2,2,126,26,0 Text 130/2,30/2,"Abbrechen",1,1 CopyRect 0,0,130,30,0,0,BackBuffer(),ImageBuffer(Button_abbord,1) MaskImage Button_abbord,255,0,255 Cls ;Öffnen Button Inaktiv Color 155,155,155 Rect 0,0,130,30,1 Color 10,10,10 Rect 0,0,130,30,0 Rect 2,2,126,26,0 Text 130/2,30/2,"Öffnen",1,1 CopyRect 0,0,130,30,0,0,BackBuffer(),ImageBuffer(Button_open,0) MaskImage Button_open,255,0,255 Cls ;Öffnen Button Aktiv Color 100,100,100 Rect 0,0,130,30,1 Color 10,10,10 Rect 0,0,130,30,0 Rect 2,2,126,26,0 Text 130/2,30/2,"Öffnen",1,1 CopyRect 0,0,130,30,0,0,BackBuffer(),ImageBuffer(Button_open,1) MaskImage Button_open,255,0,255 Cls ;Ordner Icon Color 255,255,0 Rect 0,3,10,12,1 Rect 0,0,5,5 Color 0,0,0 Rect 0,0,10,15,0 CopyRect 0,0,10,15,0,0,BackBuffer(),ImageBuffer(Dir) MaskImage Dir,255,0,255 Cls ;Datei Icon Color 255,255,255 Rect 0,0,10,15,1 Color 0,0,0 Line 0,3,10,3 Line 0,6,10,6 Line 0,9,10,9 Line 0,12,10,12 Rect 0,0,10,15,0 CopyRect 0,0,10,15,0,0,BackBuffer(),ImageBuffer(FilePic) MaskImage FilePic,255,0,255 Cls ;.txt Datei Icon Color 255,255,255 Rect 0,0,10,15,1 Color 0,0,0 Rect 0,0,10,15,0 Color 255,0,0 Text 5,7.5,"T",1,1 CopyRect 0,0,10,15,0,0,BackBuffer(),ImageBuffer(TxtPic) MaskImage TxtPic,255,0,255 Cls ;Icons fertig Global Folderpath$=CurrentDir() ; Dieses Verzeichniss wird geöffnet Global Scrollblock=0 .Start ;Ab hier geht das Auslesen eines Ordners los Filedim=0 Folder=ReadDir(Folderpath) ;Der Ordner wird gelesen Repeat File$=NextFile(Folder) ; Alle Dateien abgehen If File="" ;Wenn die letzte Datei gelesen wurde, aus der Schleife raus Exit EndIf Filedim=Filedim+1 ;Die Gesamtzahl aller Dateien ermittlen Forever Global MaxY=0 Cls Folder=ReadDir(Folderpath) ;Der Ordner wird erneut gelesen Dim Files$(Filedim) ;Die Arrays für die Dateien werden erstellt Dim FilesBack$(Filedim) Dim FilesType%(Filedim) For i=1 To Filedim ;Den Arrays werden die Dateien zugeordnet Files$(i)=NextFile(Folder) FilesType(i)=FileType(Folderpath+Files(i)) MaxY=MaxY+1 Next Global Auswahl=0 Global Datei$="" Y1=0 HidePointer() ;Hauptschleife While Not KeyHit(1) If Scrollblock=0 Speed#=MouseZSpeed() ;Scrollen mit Scrollrad der Maus EndIf If Speed>0 And Y1<0 Y1=Y1+Speed*5 ElseIf Speed<0 And Y1-GraphicsHeight()>-(MaxY*15+30) Y1=Y1+Speed*5 EndIf Cls Color 255,255,255 Rect 0,0,GraphicsWidth(),GraphicsHeight();Hintergrund zeichnen Y=0+Y1 If MouseHit(2) ;Bei Rechtsklick wird die Scrollmethode geändert | Von Scrollrad zu Pfeilen Scrollblock=-Scrollblock+1 EndIf If MouseHit(1) And Scrollblock=0 ;Wenn die Maustaste gedrückt wurde und die Scrollpfeile nicht aktiv sind If MouseY()<440 ;Wenn die Maus auf der Dateiliste ist, For Test=1 To Filedim ;werden alle Dateien überprüft Y=Test*15+Y1 If MouseY()<Y And MouseY()>Y-15 And Auswahl=0 If FilesType(Test)=2 ;Ist die Datei ein Ordner? If Files(Test)<>"." ;Sofern der Ordner nich "." heißt kann weitergemacht werden If Files(Test)="..";Heißt der Ordner ".." muss der Übergeordnete Ordner geöffnet werden Tesst=1 While Tester=0 ;Nun wird der ganze Ordnerpfad untersucht, bis der Übergeordnete gefunden wurde Tesst=Tesst+1 Rechts$=Right(Folderpath,Tesst) Links$=Left(Rechts,1) If Links="/" Or Links="\" Folderpath=Left(Folderpath,Len(Folderpath)-Tesst+1) Tester=1 EndIf Wend Tester=0 Else ;Wenn der Ordner ein Untergeordneter ist, wird dieser geöffnet Folderpath=Folderpath+Files(Test)+"\" EndIf Goto Start ;Um den Ordner auszulesen, von vorne anfangen EndIf Else ;Ist also kein Ordner und wird als Datei markiert Datei=Files(Test) EndIf EndIf Next Else ;Wenn die Maus auf den Buttons ist If ImagesCollide(Mouse,MouseX(),MouseY(),0,Button_open,0,450,1);Öffnen? If Datei<>"" ;Hier wird die Datei geöffnet! ;Also muss hier sowas wie "ExecFile" oder Open(Datei) hin EndIf Else If ImagesCollide(Mouse,MouseX(),MouseY(),0,Button_abbord,130,450,1);Abbrechen? Goto Ende ;Hier wird abgebrochen EndIf EndIf EndIf EndIf If MouseDown(1) And ImagesCollide(Mouse,MouseX(),MouseY(),0,ScrollUP,230,0,1);Scrollpfeil Oben Speed=5 Else If MouseDown(1) And ImagesCollide(Mouse,MouseX(),MouseY(),0,ScrollDown,230,30,1);Scrollpfeil Unten Speed=-5 Else Speed=0 ;Sonst gar nichts machen EndIf EndIf ;Zum Schluss noch das Visuelle: For i=1 To Filedim If MouseY()<Y+15 And MouseY()>Y And MouseX()<255 And Scrollblock=0 ;Erstmal schauen, ob die Maus über der Datei ist und kein Scrollen aktiv ist Color 255,255,0 ;Wenn die Maus über der Datei ist, Gelb Else If Datei=Files(i) ;Wenn die Datei ausgewählt ist, Grün Color 0,225,0 Else Color 255,255,255 ;Sonst Weiß EndIf EndIf Rect 10,Y,255,15 ;Unter der Datei ein Rechteck malen If FilesType(i)=2 ;Ist die Datei ein Ordner= If Files(i)<>"." ;Dieser Ordner wird ignoriert DrawImage Dir,0,Y ;Ordnericon malen EndIf Else If Right(Files(i),4)=".txt" ;Mit solchen Abfragen kann man verschiedene Icons setzen DrawImage TxtPic,0,Y ;.txt Icon malen Else DrawImage FilePic,0,Y ;Andere Datei? Dann das Dateiicon malen EndIf EndIf ;Als letztes noch die Datei und Ordnernamen: Color 0,0,0 ;in Schwarz versteht sich If Files(i)<>"." ;Dieser Ordner wird wieder ignoriert If Files(i)="..";Bei diesem Ordner muss natürlich was anderes stehen Text 10,Y, "Übergeordneten Ordner öffnen";Und zwar das! Else Text 10,Y, Files$(i) ;Sonst wird einfach der Datei oder Ordnername geschrieben EndIf EndIf Y=I*15+Y1 Next ;Die ganzen Buttons If ImagesCollide(Mouse,MouseX(),MouseY(),0,Button_open,0,450,0) And MouseY()>450 DrawImage Button_open,0,450,1 Auswahl=1 Else DrawImage Button_open,0,450,0 EndIf If ImagesCollide(Mouse,MouseX(),MouseY(),0,Button_abbord,130,450,0) And MouseY()>450 And (Not ImagesCollide(Mouse,MouseX(),MouseY(),0,Button_open,0,450,0)) DrawImage Button_abbord,130,450,1 Auswahl=2 Else DrawImage Button_abbord,130,450,0 EndIf If (Not ImagesCollide(Mouse,MouseX(),MouseY(),0,Button_abbord,130,450,0)) And (Not ImagesCollide(Mouse,MouseX(),MouseY(),0,Button_open,0,450,0)) Auswahl=0 EndIf If Scrollblock=1 ;Den Hintergrund für die Scrollpfeile und die Pfeile selbst Color 155,155,155 Rect 220,0,40,60,1 If ImagesCollide(Mouse,MouseX(),MouseY(),0,ScrollUP,230,0,0) DrawImage ScrollUP,230,0,1 Else DrawImage ScrollUP,230,0,0 EndIf If ImagesCollide(Mouse,MouseX(),MouseY(),0,ScrollDown,230,30,0) DrawImage ScrollDown,230,30,1 Else DrawImage ScrollDown,230,30,0 EndIf EndIf DrawImage Mouse,MouseX(),MouseY() ;Mauszeiger Y2=Y Flip Wend .Ende ;Speicher säubern FreeImage Dir FreeImage FilePic FreeImage Button_open FreeImage Button_abbord FreeImage Mouse FreeImage ScrollUP FreeImage ScrollDown End |
||
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte: Dexterity Ball (100%) Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz (ehemals Uboot) PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA |
- Zuletzt bearbeitet von FreetimeCoder am So, Jun 12, 2011 16:50, insgesamt einmal bearbeitet
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schon nicht schlecht, aber hier mal ein paar Verbesserungsvorschläge:
1. Ein bischen arg viel Code, für so eine kleine Spierrei 2. Es gibt kein Slider um das Verzeichniss zu scrollen. Ist ein bischen nervig, dass nur mit Mouserad zu erliedigen. Dauert einfach zu lange ![]() 3. Man kann sich nur innerhalb von C: bewegen. Was ist, wenn man zwischen mehreren Medien hinundher schalten möchte? 4. Es wäre eventuell besser, ein Ordner mit Doppelklick zu öffnen. 5. Ist ein Ordner an letzter Stelle und man möchte diesen öffnen, so lässt sich dieser nicht öffnen. 6. Es wäre das alles in Funktionen zu packen, damit man seinen Hauptcode nicht "zumüllt". Fazit: Entwickel lieber nocheinmal ein wenig weiter ![]() |
||
°_° °.° °~° °v° .. -.- |
![]() |
FreetimeCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Wenn ihr was zu verbessern habt, dürft ihr gerne was umprogrammieren
Tja wie gesagt, hab ichs ausgegraben. Inzwischen benutzte ich den Standartbrowser mit Hilfe der BlitzSys.dll. |
||
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte: Dexterity Ball (100%) Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz (ehemals Uboot) PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group