Normalerweise hast du doch automatisch einen Fokusrahmen, nachdem du auf einen Eintrag geklickt hast und danach auf eine freie Stelle:
Wenn du dafür sorgst, dass die Markierung nach dem Klick automatisch aufgehoben wird, dann ist es schon mal das, was du haben möchtest:
Code: Alles auswählen
EnableExplicit
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ExplorerListGadget(1, 0, 0, WindowWidth(0), WindowHeight(0), "C:\", 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Select EventType()
Case #PB_EventType_Change
SetGadgetItemState(1, -1, 0)
EndSelect
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Vorher könntest du den ausgewählten Eintrag mit SetGadgetItemColor() blau einfärben, aber wie ich gerade sehe, wird das beim ExplorerListGadget nicht unterstützt, sondern nur beim ListIconGadget.
Wahrscheinlich oder vielleicht gibt es eine WinAPI-Funktion zum Einfärben. Z.B. mit SetBkMode_()
\\Edit:
Noch besser klappt es mit einem Callback:
Code: Alles auswählen
EnableExplicit
Procedure WindowCallback(hwnd,uMsg,wParam,lParam)
Protected *NMHDR.NMHDR
Select uMsg
Case #WM_NOTIFY
*NMHDR.NMHDR = lParam
If *NMHDR\hwndFrom = GadgetID(1)
Select *NMHDR\code
Case #LVN_ITEMCHANGED
SetGadgetItemState(1, -1, 0)
EndSelect
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ExplorerListGadget(1, 0, 0, WindowWidth(0), WindowHeight(0), "C:\", 0)
SetWindowCallback(@WindowCallback())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Dann ist die blaue Markierung überhaupt nicht mehr zu sehen.