mit AddKeyboardShortcut kann man Tastaturevents selber verarbeiten. Ich möchte sie allerdings nur selber verarbeiten, wenn sich der Fokus in ganz bestimmten Gadgets befindet und im anderen Fall dem System die Verarbeitung überlassen. Wie geht denn sowas?
Hier ein Beispielcode:
Code: Alles auswählen
Enumeration
#ListIcon_1 : #ListIcon_2 : #String_1 : #String_2 : #String_3 : #String_4
EndEnumeration
Procedure Open_Window()
If OpenWindow(0, 216, 0, 500, 300, "Shortcut-Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ListIconGadget(#ListIcon_1,20,10,200,200,"Spalte1",100)
AddGadgetColumn(#ListIcon_1, 1, "Spalte2", 100)
ListIconGadget(#ListIcon_2,230,10,200,200,"Spalte1",100)
AddGadgetColumn(#ListIcon_2, 1, "Spalte2", 100)
StringGadget(#String_1, 20, 250, 100, 20, "String1")
StringGadget(#String_2, 130, 250, 100, 20, "String2")
StringGadget(#String_3, 240, 250, 100, 20, "String3")
StringGadget(#String_4, 350, 250, 100, 20, "String4")
EndIf
EndIf
EndProcedure
Open_Window()
AddKeyboardShortcut(0, #PB_Shortcut_Tab, 100)
AddGadgetItem (#ListIcon_1, 0,"Zeile1")
AddGadgetItem (#ListIcon_1, 1,"Zeile2")
AddGadgetItem (#ListIcon_1, 2,"Zeile3")
AddGadgetItem (#ListIcon_2, 0,"Zeile1")
AddGadgetItem (#ListIcon_2, 1,"Zeile2")
AddGadgetItem (#ListIcon_2, 2,"Zeile3")
SetGadgetItemState(#ListIcon_2, 0, #PB_ListIcon_Selected )
SetGadgetItemState(#ListIcon_1, 0, #PB_ListIcon_Selected )
SetActiveGadget(#ListIcon_1)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Menu
Select EventMenu()
Case 100
AktGadget = GetActiveGadget()
If AktGadget = #ListIcon_1
SetActiveGadget(#ListIcon_2)
ElseIf AktGadget = #ListIcon_2
SetActiveGadget(#ListIcon_1)
ElseIf AktGadget = #String_4 ; Sonderfall
SetActiveGadget(#string_1)
Else
; Fokus in Stringgadget 1-3,
; sollen vom System bearbeitet werden
EndIf
EndSelect
EndSelect
ForEver
Ich kann mein Programm leicht so erweitern, dass es so funktioniert, wie ich will. Es geht mir aber ums Prinzip.
Vielen Dank im Voraus!