Hallo,
wie kann ich Buttongesteuert in einem Explorerlistgadget Einträge auswählen?
Ich habe 3 Button die eine Prozedur mit vorher definierten Dateimustern als Parameter aufrufen. Nun sollen im Gadget genau die Einträge aktiviert/markiert werden, die der Maske entsprechen.
Habe eine For-Scheife geschrieben. die jeden Eintrag liest und mit FindeString den Inhalt vergleicht. Wenn das Muster vorkommt sollte mit
SetGadgetItemState(#Gadget, Eintrag, Status) der Eintrag aktiviert werden. Nur leider tut sich nichts. Anscheinend wird das vom Gadget nicht unterstützt. Gibt es doch eine Methode oder stelle ich mich nur unbeholfen an?
Für Hilfe wäre ich sehr dankbar.
Explorerlistgadget Einträge markieren?
Hier ist ein Beispiel mit einem StringGadget, in das man ein Textfragment eingeben kann. Alle Dateinamen mit diesem Textfragment werden nach Druck auf die entsprechende Schaltfläche markiert oder die Markierungen werden wieder entfernt.MK_2007 hat geschrieben:Hallo,
wie kann ich Buttongesteuert in einem Explorerlistgadget Einträge auswählen?
Ich habe 3 Button die eine Prozedur mit vorher definierten Dateimustern als Parameter aufrufen. Nun sollen im Gadget genau die Einträge aktiviert/markiert werden, die der Maske entsprechen.
Code: Alles auswählen
Enumeration
#ExplorerList
#ButtonSelect
#ButtonUnselect
#ButtonListFiles
#StringPattern
EndEnumeration
Procedure CheckFileEntries(SelectFile.L)
Protected Filename.S
Protected LVItem.LV_ITEM
Protected Pattern.S
Pattern = GetGadgetText(#StringPattern)
For i = 1 To CountGadgetItems(#ExplorerList)
If GetGadgetItemState(#ExplorerList, i - 1) = #PB_Explorer_File
Filename = GetGadgetItemText(#ExplorerList, i - 1, 0)
If FindString(UCase(Filename), UCase(Pattern), 1) > 0
If SelectFile
LVItem\StateMask = #LVIS_DROPHILITED
LVItem\State = #LVIS_DROPHILITED
Else
LVItem\StateMask = #LVIS_DROPHILITED | #LVIS_SELECTED
LVItem\State = 0
EndIf
SendMessage_(GadgetID(#ExplorerList), #LVM_SETITEMSTATE, i - 1, @LVItem)
EndIf
EndIf
Next i
EndProcedure
Define Info.S
Define LVItem.LV_ITEM
If OpenWindow(0, 0, 0, 420, 410, "Alles Auswählen", #PB_Window_SystemMenu |#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ExplorerListGadget(#ExplorerList, 0, 0, 420, 320, "C:", #PB_Explorer_MultiSelect | #PB_Explorer_AlwaysShowSelection)
ButtonGadget(#ButtonSelect, 10, 330, 290, 20, "Alle Dateien mit nebenstehendem Textfragment auswählen")
ButtonGadget(#ButtonUnselect, 10, 355, 290, 20, "Alle Dateien mit nebenstehendem Textfragment abwählen")
ButtonGadget(#ButtonListFiles, 100, 380, 200, 20, "Ausgewählte Dateien anzeigen")
StringGadget(#StringPattern, 320, 342, 60, 20, "LOG", #PB_String_UpperCase)
Repeat
WindowEvent = WaitWindowEvent()
If WindowEvent = #PB_Event_Gadget
Select EventGadget()
Case #ButtonSelect
CheckFileEntries(#True)
Case #ButtonUnselect
CheckFileEntries(#False)
Case #ButtonListFiles
Info = ""
For i = 1 To CountGadgetItems(#ExplorerList)
If GetGadgetItemState(#ExplorerList, i - 1) & #PB_Explorer_File
If SendMessage_(GadgetID(#ExplorerList), #LVM_GETITEMSTATE, i - 1, #LVIS_DROPHILITED) = #LVIS_DROPHILITED Or GetGadgetItemState(#ExplorerList, i - 1) & #PB_Explorer_Selected
Info = Info + GetGadgetItemText(#ExplorerList, i - 1, 0) + #CR$
EndIf
EndIf
Next i
If Info = ""
MessageRequester("Info", "Es sind zur Zeit keine Dateien ausgewählt!", #MB_ICONINFORMATION)
Else
MessageRequester("Ausgewählte Dateien", Info, #MB_ICONINFORMATION)
EndIf
EndSelect
EndIf
Until WindowEvent = #PB_Event_CloseWindow
EndIf
EndIf
End