Seite 1 von 2

ExplorerTreeGadget - mehrere Dateien mit Strg markieren

Verfasst: 08.03.2007 01:55
von Excalibur
Hallo,

bin noch recht neu in Pure Basic.

Hab mir auch schon in der Hilfe und im Board gesucht, leider nur Andeutungen gefunden.

Zur Frage:
Der Benutzer soll wie im Win-Explorer mit Str oder Shift einige Dateien auswählen können. (also nicht nur eine)

ExplorerTreeGadget

Man kann dort immer nur eine Datei markieren.

Gibt es die Möglichkeit (wie im Windows-Explorer) mehrere Dateien zu markieren? (Mit Str oder Shift)

Habs auch schon mit #PB_Explorer_MultiSelect probiert. Ging nicht. (War halt nur eine Idee, da es vom Textlaut gepaßt hätte)

Oder muß ich einen Spezialtrick anwenden - in etwa so:
Ein Schleife

Wenn der Benutzer die Datei ausgewählt hat, diese mit Farbe hinterlegen.

Wenn der Benutzer eine weitere Datei ausgwählt hat, dann die 1. und die 2. mit Farbe hinterlegen

Wenn der Benutzer eine 3. Datei ausgewählt hat, dann die 1. , 2. und die 3 mit Farbe hinterlegen etc.

Das wäre schon etwas aufwendig. Auf der anderen Seite müssen die Ergebnisse ja in eine Variable (müssen nicht - schon klar)

Das hieße, das man bei der Auwahl von mehreren Dateien mit DIM arbeiten müßte oder könnte.

Jedenfalls wäre die Programmierung für einen solch leichten Sachverhalt recht umständlich.

Würde mich über eine Hilfestellung wirklich sehr freuen.

(Und schon wieder ist es nachts um eins. Seit ich PB habe, fehlt mir eindeutig der Schlaf. Und wenn ich mal ein bißchen Schlaf habe, träume ich von PB. Ich weiß nicht, welcher Teufel mich geritten hat, das überhaupt anzuschaffen. Aber es macht wirklich Laune! :allright: )

Verfasst: 08.03.2007 12:17
von Kaeru Gaman
das ExplorerTreeGadget ist nicht dafür vorgesehen, um mehrere Ordner zu markieren.
das kann die linke spalte in deinem explorer auch nicht.
Schau dir mal das ExplorerListGadget an.

ExplorerListGadget

Verfasst: 08.03.2007 12:31
von Excalibur
Hallo,

danke für die schnelle Info. Das schau ich mir mal an.

Muß dann halt irgendwie die Dateinamen reinbekommen.

Verfasst: 08.03.2007 12:51
von Fluid Byte
Du kannst direkt nen' Pfad angeben wenn du ein Explorer Gadget erstellst.

Einfach mal die Hilfe lesen. :allright:

Feine Sache

Verfasst: 08.03.2007 13:00
von Excalibur
Ich muß schon sagen, daß mir dieses Board super gut gefällt.

Es ist nicht so überladen, aber ich hab gleich eine schnelle Hilfe bekommen. Die ist schon fast wie in einem kleinen Club.

Manchmal braucht man halt einen kleinen Hinweis, wenn man irgendwo hängt.

Ich denke, daß ich es jetzt hinbekommen werde.

Danke! <)

Verfasst: 08.03.2007 13:10
von Fluid Byte
Es ist nicht so überladen, aber ich hab gleich eine schnelle Hilfe bekommen. Die ist schon fast wie in einem kleinen Club.
Qualität statt Quantität! :D

Verfasst: 08.03.2007 13:17
von Excalibur
Ja, das stimmt wahrlich.

Es funktioniert fast

Verfasst: 09.03.2007 00:51
von Excalibur
Hallo,

ich habs jetzt mit ExplorerListGadget probiert.

Es funktioniert. Ich kann also mehrere Dateien auswählen. Danke für den Tip.

Wie kriege ich die Auswahl nun in eine Variable?

Habs folgendermaßen versucht:

Code: Alles auswählen

  If OpenWindow(0, 0, 0, 400, 200, "ExplorerListGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
    ExplorerListGadget(0, 10, 10, 380, 180, "*.*", #PB_Explorer_MultiSelect)
      Repeat 


        auswahl$ = GetGadgetItemText(0,0,0) ;Auswahl des Benutzers in eine Variable schreiben
        ;natürlich wird nur #Gadget, Eintrag, Spalte also 0,0,0 angzeigt, schon klar
         
        Debug auswahl$ ; ist hier zwar Blödsinn, weil es durchläuft, aber zumindest sehe ich den Variableninhalt
        
        ;Nächster Versuch mit GetGadgetState:
        eintrag=GetGadgetState(0) ; Ermittelt den ersten ausgewählten Eintrag, aber wie kann ich die weiteren ausgewählten Einträge erfassen?
        Debug (Str(eintrag)) ; auch wieder Blödsinn, aber nur zum Überprüfen des Variableninhalts gedacht
    
    
        ;Ein weiterer Versuch mit GetGadgetText:
        
        inhalt$ = GetGadgetText(0)
        Debug (inhalt$)
        ;-> gibt leider nur den Pfad aus

        
        
      Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf 
In der Hilfe habe ich nichts darüber gefunden, wie mehrere gewählte Einträge in eine Variable übernommen werden können. Ich kann Sie zumindest mit Str oder Shift "optisch" auswählen.

Können mir die Profis vielleicht auf die Sprünge helfen? Das wäre sehr nett von Euch.

Variable

Verfasst: 09.03.2007 01:00
von Excalibur
Noch ein Hinweis:
Mir ist schon klar, daß ich u.U. mit einer dimensionierten Variable oder Liste arbeiten muß, wo ich den Inhalt reinschreiben kann.

Die Frage ist nur, wie kann ich die Auswahl von mehreren Dateien überhaupt erfassen?

Re: Variable

Verfasst: 09.03.2007 01:20
von Kiffi
Excalibur hat geschrieben:Die Frage ist nur, wie kann ich die Auswahl von mehreren Dateien überhaupt erfassen?
hier ein kleiner Beispielcode:

Code: Alles auswählen

Enumeration
  #WINDOW
  #EG
  #BT
EndEnumeration

; Eine LinkedList, die die selektierten Elemente aufnimmt
NewList SelectedItems.s()

If OpenWindow(#WINDOW, 0, 0, 400, 230, "ExplorerListGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(#WINDOW))
    
    ExplorerListGadget(#EG, 10, 10, 380, 180, "*.*", #PB_Explorer_MultiSelect)
    ButtonGadget(#BT, 265, 200, 125, 25, "Get selected Items")
    
    Repeat
      
      Event=WaitWindowEvent()
      
      Select Event
        
        Case #PB_Event_Gadget
          
          Select EventGadget()
            
            Case #BT 
              
              ClearList(SelectedItems())
              
              ; Selektierte Einträge ermitteln und in SelectedItems() speichern
              For item = GetGadgetState(#EG) To CountGadgetItems(#EG)-1
                If GetGadgetItemState(#EG, item) & #PB_Explorer_Selected
                  AddElement(SelectedItems())
                  SelectedItems() = GetGadgetText(#EG) + GetGadgetItemText(#EG, item, 0)
                EndIf
              Next item
              
              ; Für den Test: Inhalt von SelectedItems() ausgeben
              ForEach SelectedItems()
                Debug SelectedItems()
              Next  
              
          EndSelect
          
      EndSelect
      
    Until Event = #PB_Event_CloseWindow
    
  EndIf
EndIf 
Falls irgendetwas unklar sein sollte: Einfach nachfragen.

Grüße ... Kiffi