Seite 1 von 1

Hilfe für 2 Listfenster..

Verfasst: 09.11.2011 12:41
von funkheld
Hallo, guten Tag.
Ich möchte ein Ersatz für den Windowexplorer.
Habe unten mal ein Muster. Wie kann ich es umstellen, das nur die Datei erscheint ohne Datum und Grösse.
Wie kann ich zusätzelich dieses erweitern, das auch bei einem Doppleklick die Datei geöffnet wird?

danke.

gruss

Code: Alles auswählen

If OpenWindow(1, 200, 200, 220, 610, "Drag & Drop", #PB_Window_SystemMenu)
    ExplorerListGadget(1, 10, 10, 250, 340, "d:\atari\pebi-bas\*.txt;*.tur", #PB_Explorer_MultiSelect)
    ExplorerListGadget(2, 10, 350, 250, 250, "d:\atari\pebi-asm\*.;*.bin;*.obj", #PB_Explorer_MultiSelect)
  
    Repeat
      Event = WaitWindowEvent()  
          
      If Event = #PB_Event_Gadget And EventGadget() = 1 And EventType() = #PB_EventType_DragStart
        Files$ = ""       
        For i = 0 To CountGadgetItems(1)-1
          If GetGadgetItemState(1, i) & #PB_Explorer_Selected
            Files$ + GetGadgetText(1) + GetGadgetItemText(1, i) + Chr(10)
          EndIf
        Next i    
        DragFiles(Files$)
      EndIf    
      
      If Event = #PB_Event_Gadget And EventGadget() = 2 And EventType() = #PB_EventType_DragStart
        Files$ = ""       
        For i = 0 To CountGadgetItems(2)-1
          If GetGadgetItemState(2, i) & #PB_Explorer_Selected
            Files$ + GetGadgetText(2) + GetGadgetItemText(2, i) + Chr(10)
          EndIf
        Next i    
        DragFiles(Files$)
      EndIf      
      
    Until Event = #PB_Event_CloseWindow
  EndIf

Re: Hilfe für 2 Listfenster..

Verfasst: 09.11.2011 13:59
von Andesdaf
zum ersten:

Code: Alles auswählen

SetGadgetAttribute(1,#PB_Explorer_DisplayMode,#PB_Explorer_List)
SetGadgetAttribute(2,#PB_Explorer_DisplayMode,#PB_Explorer_List)
Das zweite benötigt einen Callback, ich hab aber grad keine Zeit, einen
zusammenzubasteln. Hier schon mal die beiden Proceduren, die für den
Aufruf benötigt werden:

Code: Alles auswählen

Procedure.s ReadRegKey(iOpenKey.i,sSubkey.s,sValueName.s) 
  Protected iHkey.i=0 
  Protected sKeyvalue.s=Space(255) 
  Protected iDatasize.i=255 
  
  If RegOpenKeyEx_(iOpenKey,sSubkey,0,#KEY_READ,@iHkey) 
    ProcedureReturn ""
  Else 
    If RegQueryValueEx_(iHkey,sValueName,0,0,@sKeyvalue,@iDatasize) 
        sKeyvalue = "" 
    Else  
        sKeyvalue=Left(sKeyvalue,iDatasize-1) 
    EndIf 
    RegCloseKey_(iHkey) 
  EndIf 
    
  ProcedureReturn sKeyvalue 
EndProcedure 

Procedure StartProgram(sDatei.s)
  Protected sSymbol.s = ReadRegKey(#HKEY_CLASSES_ROOT,"."+LCase(GetExtensionPart(sDatei)),"")
  If sSymbol <> ""
    Protected sSymbolPlay.s = ReadRegKey(#HKEY_CLASSES_ROOT,sSymbol+"\shell\play\command","")
    Protected sSymbolOpen.s = ReadRegKey(#HKEY_CLASSES_ROOT,sSymbol+"\shell\open\command","")
    If sSymbolPlay <> ""
      RunProgram(sSymbolPlay,sDatei,"")
    ElseIf sSymbolOpen <>""
      RunProgram(sSymbolOpen,sDatei,"")
    EndIf
  EndIf
EndProcedure

Re: Hilfe für 2 Listfenster..

Verfasst: 09.11.2011 14:07
von funkheld
Jup, danke.

Wie kann ich ein Dateitype löschen aus einem Ordner, mit Sternchen funktioniert nicht?
DeleteFile("d:\atari\pebi-asm\*.obj")

danke.

gruss

Re: Hilfe für 2 Listfenster..

Verfasst: 09.11.2011 14:28
von Andesdaf
das geht so ohne weiteres nicht. glaub ich jedenfalls.

Das ExplorerListGadget ist für so große Funktionen eh schlecht geeignet,
da macht sich ein selbst gefülltes ListIconGadget einfacher. Hat aber
natürlich mehr Programmieraufwand.

Re: Hilfe für 2 Listfenster..

Verfasst: 09.11.2011 15:30
von funkheld
Wie kann man denn zum Löchen eine Batch aufrufen, die ich jetzt erstellt habe ?

danke.

guss

Re: Hilfe für 2 Listfenster..

Verfasst: 09.11.2011 21:25
von Danilo
funkheld hat geschrieben:Wie kann ich ein Dateitype löschen aus einem Ordner, mit Sternchen funktioniert nicht?
DeleteFile("d:\atari\pebi-asm\*.obj")
Schreib Dir eine kleine Funktion dafür. Zum Beispiel so:

Code: Alles auswählen

Procedure DeleteFileType(Path$,Type$)
  Protected dir, deleted, file$

  dir = ExamineDirectory(#PB_Any, Path$, Type$)
  If dir
    While NextDirectoryEntry(dir)
      If DirectoryEntryType(dir) = #PB_DirectoryEntry_File
        file$ = Path$ + DirectoryEntryName(dir)
        Debug file$
        ;If DeleteFile(file$)
          deleted + 1
        ;Else
          ; error, can not delete file
        ;EndIf
      EndIf
    Wend
    FinishDirectory(dir)
  EndIf

  ProcedureReturn deleted

EndProcedure

Debug DeleteFileType("d:\atari\pebi-asm\","*.obj")
DeleteFile(file$) hab ich zum testen mal auskommentiert.

Re: Hilfe für 2 Listfenster..

Verfasst: 10.11.2011 01:02
von funkheld
jup, danke.

gruss