die mit
Code: Alles auswählen
ListIconGadget(#LIV_SOURCE, 15, 25, 550, 340, "Sel.", 30, #PB_ListIcon_CheckBoxes | #PB_ListIcon_MultiSelect |#PB_ListIcon_FullRowSelect | #PB_ListView_ClickSelect|#PB_ListIcon_GridLines)
Das ist meine Hauptschleife:
Code: Alles auswählen
Repeat
Event = WaitWindowEvent()
WinNum = EventWindow()
Select WinNum
Case 0
; bestimme Anzahl der Listeinträge, wird fast immer gebraucht
*WorkParams\NumItems = CountGadgetItems( #LIV_SOURCE )
Select Event
Case #PB_Event_Gadget ; wenn es ein Gadgetevent war....
HandlingCode = EventGadget( )
Handle_Gadgets( HandlingCode, *WorkParams.WP )
Case #PB_Event_Menu ; wenn es ein Menuevent war
HandlingCode = EventMenu( )
Handle_Menues( HandlingCode, *WorkParams.WP )
Case #WM_TIMER ; wenn es ein Timerevent war....
If *WorkParams\CP\autoRfsh >999
Refresh_ListIV( *WorkParams.WP )
EndIf
EndSelect
Set_TVFTStatusBar( *workparams )
Case 1 ; Playlist
Case 2 ;
EndSelect
Until Event = #PB_Event_CloseWindow
Code: Alles auswählen
Procedure.l Handle_Gadgets( HandlingCode.l, *WorkParams.WP )
; Diese Routine wickelt die BUTTON-Events ab
; es gibt noch eine ähnliche Routine, die die Menü-Events behandelt
; Über die Buttons erledigt man die laufenden Funktionen
Define AbsFileName.s = ""
Define vlc.s = "D:\Programme\Tools\App\Multimedia\VLC\vlc.exe"
Define wdir.s = "."
Define ext.s
Define hold.s
Define idx
Define pp.s
NewList Deletable()
; Zunächst die Aktionen unabhängig von Markierungen durchführen
Select HandlingCode
Case 0 : EvCt = 1 :
idx = GetGadgetState( #LIV_SOURCE )
AbsFileName = GetGadgetItemText( #LIV_SOURCE, idx, 4)
pp = GetPathPart(absfilename)
AbsFileName = Chr(34)+Absfilename+Chr(34)
RunProgram(vlc, AbsFileName, pp)
Case #T1_TDIR : EvCt = 1
; ...
Nur tut sie das bei jedem Mausclick 2x, und so soll es nicht sein.
Jetzt habe ich erst gedacht, meine Maus bzw. Touchpad "prellen",
dem ist aber wahrscheinlich nicht so, denn unterm Debugger sieht das so aus :
Das Programm rotiert in der Hauptschleife,
bis ich auf eine Zeile des ListIconGadgets clicke,
springt dann in handle_gadgets(),
holt sich auch die richtige Dateispezifikation aus der 4. Spalte
und startet das Abspielprogramm.
Dann geht er korrekt in die Hauptschleife zurück,
durchläuft sie einmal offenbar ohne Event,
UM DANN BEIM NÄCHSTEN DURCHLAUF nochmal in handle_gadget() zu gehen und den Player nochmal zu starten,
und sich danach dann völlig normal zu verhalten.
Ja, wieso DAS denn ?
HAbe ich es mit den geoderten Flags bei der Definition des LIG übertrieben, oder was ?
Das ganze hat seit Wochen mit den checkboxes sehr sauber funktioniert, allerdings ohne die Flags
Code: Alles auswählen
|#PB_ListIcon_FullRowSelect | #PB_ListView_ClickSelect
Ich fand es dann blöd, jedesmal für Einzeldateien die Checkbox anzuklicken und einen "Ausführen" Button nutzen zu müssen
Danke für Eure Tips
CJ