ExplorerTreeGadget - mehrere Dateien mit Strg markieren

Anfängerfragen zum Programmieren mit PureBasic.
Excalibur
Beiträge: 27
Registriert: 26.02.2007 23:56

ExplorerTreeGadget - mehrere Dateien mit Strg markieren

Beitrag 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: )
PB v4.02 XP
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Excalibur
Beiträge: 27
Registriert: 26.02.2007 23:56

ExplorerListGadget

Beitrag von Excalibur »

Hallo,

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

Muß dann halt irgendwie die Dateinamen reinbekommen.
PB v4.02 XP
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Du kannst direkt nen' Pfad angeben wenn du ein Explorer Gadget erstellst.

Einfach mal die Hilfe lesen. :allright:
Windows 10 Pro, 64-Bit / Outtakes | Derek
Excalibur
Beiträge: 27
Registriert: 26.02.2007 23:56

Feine Sache

Beitrag 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! <)
PB v4.02 XP
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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
Windows 10 Pro, 64-Bit / Outtakes | Derek
Excalibur
Beiträge: 27
Registriert: 26.02.2007 23:56

Beitrag von Excalibur »

Ja, das stimmt wahrlich.
PB v4.02 XP
Excalibur
Beiträge: 27
Registriert: 26.02.2007 23:56

Es funktioniert fast

Beitrag 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.
PB v4.02 XP
Excalibur
Beiträge: 27
Registriert: 26.02.2007 23:56

Variable

Beitrag 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?
PB v4.02 XP
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Variable

Beitrag 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
a²+b²=mc²
Antworten