FileRequester / neuen Ordner erzeugen

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

4pac

Betreff: FileRequester / neuen Ordner erzeugen

BeitragFr, Jan 23, 2004 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi liebe Coderz,

hat schon jemand von Euch ein Workaround gefunden, wie man einen FileRequester bauen kann, der einem gestattet, ein Verzeichnis neu anzulegen, wenn man ihn z.B. benutzt um ein Zielverzeichnis zum abspeichern einer Datei festzulegen? Defaultmäßig geht das leider nicht beim B+ FileRequester, obwohl so eine Funktion sogar in eher spartanischen Interfaces wie z.B. dem von Winzip absolut üblich ist.

Viele Grüße,
Thomas

TheShadow

Moderator

BeitragFr, Jan 23, 2004 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
unter Win98 ist sowas gar nicht möglich mit den Standarddialog - gleiches Prog unter XP: mit Button "neuen Ordner erzeugen" - auf Win98 ohne...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

4pac

BeitragFr, Jan 23, 2004 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Echt Sad ?! Porco mundo. Dann muss ich das über einen separaten Button lösen...danke für Dein Posting, TheShadow.

Grüße,
Thomas

D2006

Administrator

BeitragFr, Jan 23, 2004 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub ich versteh dich nicht ganz.

du willst ein requestfile-dialog, wo man einen neuen Ordner anlegen kann?
geht bei mir einwandfrei.

Oder was meinst du sonst ???
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

TheShadow

Moderator

BeitragFr, Jan 23, 2004 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
warum geht es dann nicht bei mir?

http://www.blitzbase.de/befehlegui/requestdir.htm

(screenshot inside - win98SE)
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

D2006

Administrator

BeitragSa, Jan 24, 2004 1:11
Antworten mit Zitat
Benutzer-Profile anzeigen
achso, na dass ist ja der DirRequester. Okay, dass geht auch bei mir nicht.

MfG
 

walski

Ehemaliger Admin

BeitragSa, Jan 24, 2004 1:23
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.blitzbase.de/befehlegui/requestfile.htm

Tada, da gehts und es ging doch um nen FILERequester oder nicht??

Naja, geht das bei dir nicht Thomas?

walski
buh!

4pac

BeitragSa, Jan 24, 2004 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm...ich bräuchte natürlich eigentlich einen DirRequester, für das Output einer Stapelverarbeitung, und habe mich insoweit falsch ausgedrückt. Aber vielleicht kann ich das Problem einfach umgehen, indem ich anstatt einers DirRequesters einen FileRequester verwende, und die Function dementsprechend ein wenig umcode. Das ist ein guter Ansatz, ich danke Dir, Walski.

Die erste wirklich große Gelegenheit, BlitzPlus in meinem Job einzusetzen, für ein paar effiziente kleine Stapelverarbeitungen mit einer brauchbaren Win-GUI.

Grüße,
Thomas

TheShadow

Moderator

BeitragSa, Jan 24, 2004 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
das wirst du nicht hinkriegen mit filerequest
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

walski

Ehemaliger Admin

BeitragSo, Jan 25, 2004 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß zwar nicht warum, aber ich habs mal gemacht:
Code: [AUSKLAPPEN]

Function ADVDirRequest$()
   
   Local DirRequest
   Local DriveSelect
   Local DriveLabel
   Local DirBox
   Local CurPath
   Local OK
   Local Cancel
   Local NewFolder
      DirRequest = CreateWindow("Select a Folder",46,150,400,300,Desktop(),1)
      DriveSelect = CreateComboBox(288,3,100,100,DirRequest,0)
      AddGadgetItem DriveSelect,""
      SelectGadgetItem DriveSelect,0
      SetGadgetLayout DriveSelect,1,0,1,0
      DriveLabel = CreateLabel("Select a Drive:",203,4,80,20,DirRequest,0)
      SetGadgetLayout DriveLabel,1,0,1,0
      DirBox = CreateListBox(1,60,390,190,DirRequest,0)
      AddGadgetItem DirBox,""
      SelectGadgetItem DirBox,0
      SetGadgetLayout DirBox,1,0,1,0
      CurPath = CreateLabel("Pfad:",2,25,300,35,DirRequest,0)
      SetGadgetLayout CurPath,1,0,1,0
      OK = CreateButton("OK",3,252,100,20,DirRequest,0)
      SetGadgetLayout OK,1,0,1,0
      Cancel = CreateButton("Cancel",288,252,100,20,DirRequest,0)
      SetGadgetLayout Cancel,1,0,1,0
      NewFolder = CreateButton("Create Folder",139,252,100,20,DirRequest,0)
      SetGadgetLayout NewFolder,1,0,1,0
      DisableGadget(DirRequest)
      FillDriveList(DriveSelect)
      CPath$=GadgetItemText$(DriveSelect,SelectedGadgetItem(DriveSelect))+"\"
      FillFolderBox(DirBox,CPath$)
      SetGadgetText CurPath,CPath$
      EnableGadget(DirRequest)LEvent = 0
      
      
      
   While LEvent<>$803
      LEvent = WaitEvent()
      If LEvent=1025
         Select EventSource()
         Case DriveSelect
            CPath$ = GadgetItemText$(DriveSelect,SelectedGadgetItem(DriveSelect))+"\"
            SetGadgetText CurPath,CPath$
            FillFolderBox(DirBox,GadgetItemText$(DriveSelect,SelectedGadgetItem(DriveSelect))+"\")
         Case DirBox
            NItem = SelectedGadgetItem(DirBox)
               CPath$ = CPath$ + GadgetItemText(DirBox,NItem) + "\"
               If Right$(CPath$,4)="\..\" Then
                  CPath$= Mid(CPath$,1,Len(CPath$)-4)
                  Cpath$ = Mid(Cpath$,1,RInstr(Cpath$,"\"))
               EndIf
               FillFolderBox(DirBox,CPath$)
         Case NewFolder
            nFolder$ = InputBox$()
            If nFolder$<>"" Then
               CreateDir CPath$ + "\" + nFolder$
            EndIf
            FillFolderBox(DirBox,CPath$)
         Case OK
            FreeGadget DirRequest
            Return CPath$
         Case Cancel
            Return ""
         End Select
      EndIf
      FlushEvents
      SetGadgetText CurPath,CPath$
   Wend
   FreeGadget DirRequest
   Return ""
End Function

; ----Function Begins----
Function FillDriveList(Gadget)
   ClearGadgetItems(Gadget)
   For i=65 To 90
      temp = ReadDir(Chr$(i)+":\")
      If temp Then
         AddGadgetItem Gadget,Chr$(i)+":"
      EndIf
   Next
   If CountGadgetItems(Gadget)>0 Then
      SelectGadgetItem Gadget,0
   EndIf
End Function

Function FillFolderBox(Gadget,Dir$)
   FlushEvents
   CDir = ReadDir(Dir$)
   If CDir Then
      ClearGadgetItems(Gadget)
      While MoreFiles(CDir)
         CFile$ = NextFile$(CDir)
         If FileType(Dir$ + CFile$)=2 Or CFile$=".." And (Not CFile$=".") Then
            AddGadgetItem(Gadget,CFile$)
         EndIf
      Wend
   EndIf
End Function

Function RInstr(Bay$,Hash$,Start=0)
   If Start>Len(Bay$) Then
      Return 0
   EndIf
   If Start+Len(Hash$)>Len(Bay$) Or Start=0 Then
      Start = Len(Bay$)-Len(Hash$)
   EndIf
   For i=Start To 1 Step -1
      If Mid(Bay$,i,Len(Hash$))=Hash$ Then
         Return i
      EndIf
   Next
   Return 0
End Function

Function InputBox$()
Local InputBox,NewFolderLabel,NewFolderText,OK,Cancel,LEvent
InputBox = CreateWindow("Create new Folder",50,150,300,80,Desktop(),1)
NewFolderLabel = CreateLabel("New Folder's Name:",6,9,100,20,InputBox,0)
SetGadgetLayout NewFolderLabel,1,0,1,0
NewFolderText = CreateTextField(4,30,280,20,InputBox,0)
SetGadgetText NewFolderText,""
SetGadgetLayout NewFolderText,1,0,1,0
OK = CreateButton("O.K.",108,5,50,20,InputBox,0)
SetGadgetLayout OK,1,0,1,0
Cancel = CreateButton("Cancel",166,5,100,20,InputBox,0)
SetGadgetLayout Cancel,1,0,1,0
LEvent = 0
While LEvent<>$803
   LEvent=WaitEvent()
   If LEvent = 1025 Then
      Select EventSource()
         Case OK
            temp_text$ = TextFieldText$(NewFolderText)
            FreeGadget InputBox
            Return temp_text$
         Case Cancel
            FreeGadget InputBox
            Return ""
      End Select
   EndIf
; Do Something
Wend
FreeGadget InputBox
Return ""
; ----Function Begins----
End Function


Jaja, scheiße gecodet, weiß ich selber. Die hälfte is von diesem GUI Editor der als Sample bei B+ dabei is, die andre Hälfte is halt super unordentlich runtergecodet ohne auf Lokale Variablen etc zu achten.
Naja, kannst die Datei halt einfach includen und dann sowas machen:

ChosenDir$ = ADVDirRequest$()
if ChosenDir$<>"" then
Notify ChosenDir$
endif

ich wollte auch zuerst ne TreeView nehmen, aber B+ ist so ein vedammter Müll, das ich mir das einfach nicht angetan hab!

So, jetzt habe ich wirklich KEIEN Zeit mehr und muss mein dummes Musik-Referat vorbereiten.

walski
buh!

4pac

BeitragSo, Jan 25, 2004 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Walski - Wow, nicht übel, mein Lieber! Funktioniert und fügt sich gut in mein Framework. Das Layout holpert noch ein Bisschen, aber das kriege ich schon hingebogen.
Ich hab das ganze Wochenende an diesem Kram herumgebastelt, hauptsächlich auf der Jagd nach einem einzigen Bug, den ich jetzt gefunden habe. Danke für Deine Hilfe!

Grüße,
Thomas
 

walski

Ehemaliger Admin

BeitragSo, Jan 25, 2004 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
NP, das Layout (sowohl das wirkliche Layout als auch das des Codes) sind wie gesagt sowas von fürn Arsch, das ist fast unglaublich!

walski
buh!

4pac

BeitragMo, Jan 26, 2004 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
@ walski - Für mich war bereits Dein Ansatz wertvoll - zu sehen, wie Du das löst. Aus Deinem Code habe ich jetzt letztlich nur die Inputbox() gezockt, weil sie mir uldra-einleuchtend erschien, und ich nicht mit Code arbeiten mag, den ich nit verstehe. Und weil ich den Rest gar nicht brauchte, Dir-/File-Liste und so. Dafür ein paar andere Sachen, die ich mir selbst dazugecodet habe. Danke nochmal!

Grüße,
Thomas
 

walski

Ehemaliger Admin

BeitragMo, Jan 26, 2004 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Kein Problem Wink
Ja, mich hat das RICHTIG aufgeregt mit der Inputbox, dass es da kein fertiges Ding für gibt. Aber naja, auch die Inputbox war eher so hingepfuscht als normal programmiert Wink

walski
buh!

4pac

BeitragMo, Jan 26, 2004 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
walski hat Folgendes geschrieben:
Aber naja, auch die Inputbox war eher so hingepfuscht als normal programmiert ;)walski


Naja, das Layout habe ich noch ein Wenig zurechtgerückt Wink aber die Idee war gut, und der Codeentwurf brauchbar weil kurz und übersichtlich (in der inputbox() Function). Echt, Notify und Proceed gibt´s, aber keine Inputbox Confused

[EDIT] Damit Du auch mal siehst, wozu Du da Tipps gegeben hast, ein Screenshot von dem Batch Copy & Rename Tool, das ein Modul, halt einen "Wizard" oder Assistenten einer etwas umfangreicheren Software darstellt, die ansonsten in VB gecodet wird (nicht von mir):

user posted image

Das Tool zum Download verfügbar zu machen, hat kaum Sinn, da kann keiner was mit anfangen außer den Leuten in meiner Firma, weil es ganz speziell auf die dort anfallenden Arbeitsabläufe zugeschnitten ist. Naja, sonst würde es ja auch kaum Sinn machen sich hinzusetzen und einen Batch Renamer zu coden, weil´s die ja schon wie Sand am Meer als Freeware gibt.
[/EDIT]

Grüße,
Thomas

4pac

BeitragMi, Jan 28, 2004 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
[EDIT] Ist an sich ein völlig neues Thema, ich hab deswegen einen neuen Thread draus gemacht [/EDIT]

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group