
Noch'n Gedicht:
Warum gibt es in dieser Version des DatumsrRequesters Probleme mit der Abfrage, wenn zuvor im DateGadget die Cursortasten benutzt worden sind...
Code: Alles auswählen
Procedure.l InputDate(CallerWindowID.l, CallerItemID.l, X.l, Y.l, Title$, DefaultDate.l)
Protected Event.l, EventwParam.l, EventWindow.l, EventGadget.l, Window.l, Date.l, Button.l, Result.l = -1
Window = OpenWindow(#PB_Any, X, Y, 150, 40, Title$, #PB_Window_SystemMenu | #PB_Window_TitleBar, WindowID(CallerWindowID))
If Window And CreateGadgetList(WindowID(Window))
Date = DateGadget(#PB_Any, 10, 10, 90, 20, "%mm/%dd/%yyyy", DefaultDate)
Button = ButtonGadget(#PB_Any, 110, 10, 30, 20, "OK")
DisableWindow(CallerWindowID, #True)
SetActiveGadget(Date)
Repeat
Event = WaitWindowEvent()
EventWindow = EventWindow()
EventwParam = EventwParam()
EventGadget = EventGadget()
If EventWindow = Window ; ############################
Select Event
Case #PB_Event_CloseWindow
Result = 0
Case #WM_KEYUP
If EventwParam = #VK_ESCAPE : Result = 0 : EndIf
If EventwParam = #VK_RETURN : Result = GetGadgetState(Date) : EndIf
Debug EventwParam
Case #PB_Event_Gadget
If EventGadget = Button : Result = GetGadgetState(Date) : EndIf
EndSelect
EndIf ; ############################
Until Result > -1
CloseWindow(Window)
DisableWindow(CallerWindowID, #False)
SetActiveGadget(CallerItemID)
ProcedureReturn Result
EndIf
EndProcedure
... und in dieser Version nicht?
Code: Alles auswählen
Procedure.l InputDate(CallerWindowID.l, CallerItemID.l, X.l, Y.l, Title$, DefaultDate.l)
Protected Event.l, EventwParam.l, EventWindow.l, EventGadget.l, Window.l, Date.l, Button.l, Result.l = -1
Window = OpenWindow(#PB_Any, X, Y, 150, 40, Title$, #PB_Window_SystemMenu | #PB_Window_TitleBar, WindowID(CallerWindowID))
If Window And CreateGadgetList(WindowID(Window))
Date = DateGadget(#PB_Any, 10, 10, 90, 20, "%mm/%dd/%yyyy", DefaultDate)
Button = ButtonGadget(#PB_Any, 110, 10, 30, 20, "OK")
DisableWindow(CallerWindowID, #True)
SetActiveGadget(Date)
Repeat
Event = WaitWindowEvent()
EventWindow = EventWindow()
EventwParam = EventwParam()
EventGadget = EventGadget()
Select Event
Case #PB_Event_CloseWindow
If EventWindow = Window : Result = 0 : EndIf ; ##########################
Case #WM_KEYUP
If EventwParam = #VK_ESCAPE : Result = 0 : EndIf
If EventwParam = #VK_RETURN : Result = GetGadgetState(Date) : EndIf
Debug EventwParam
Case #PB_Event_Gadget
If EventGadget = Button : Result = GetGadgetState(Date) : EndIf
EndSelect
Until Result > -1
CloseWindow(Window)
DisableWindow(CallerWindowID, #False)
SetActiveGadget(CallerItemID)
ProcedureReturn Result
EndIf
EndProcedure
Die Unterschiede sind mit # markiert.
In der ersten Version (mit dem "WindowID-If" drumherum) reagieren ESC und RETURN nicht mehr, wenn ich mittels Cursor im DatumsGadget rumgekurft bin.