Seite 1 von 1
Bug in KeyboardInkey()
Verfasst: 04.04.2006 21:40
von Batze
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenWindow(0, 10, 10, 800, 600, "Test", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
If OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
Repeat
FlipBuffers()
ClearScreen($000000)
ExamineKeyboard()
FullText$ + KeyboardInkey() ; fügt das nächste Zeichen zum aktuellen Text (sofern vorhanden) hinzu
; Wenn wir die 'Backspace'-Taste drücken, löschen wir das letzte Zeichen
;
If KeyboardReleased(#PB_Key_Back)
FullText$ = Left(FullText$, Len(FullText$)-1)
EndIf
; Ergebnis darstellen
;
If StartDrawing(ScreenOutput())
DrawingMode(1)
DrawText(20, 20, "Gib einfach etwas Text ein...:", $00FF88)
DrawText(20, 40, FullText$, $00FF88)
StopDrawing()
EndIf
Until KeyboardPushed(#PB_Key_Escape)
EndIf
-> Geht nicht
Code: Alles auswählen
InitSprite()
InitKeyboard()
If OpenScreen(800,600,16,"")
Repeat
FlipBuffers()
ClearScreen($000000)
ExamineKeyboard()
FullText$ + KeyboardInkey() ; fügt das nächste Zeichen zum aktuellen Text (sofern vorhanden) hinzu
; Wenn wir die 'Backspace'-Taste drücken, löschen wir das letzte Zeichen
;
If KeyboardReleased(#PB_Key_Back)
FullText$ = Left(FullText$, Len(FullText$)-1)
EndIf
; Ergebnis darstellen
;
If StartDrawing(ScreenOutput())
DrawingMode(1)
DrawText(20, 20, "Gib einfach etwas Text ein...:", $00FF88)
DrawText(20, 40, FullText$, $00FF88)
StopDrawing()
EndIf
Until KeyboardPushed(#PB_Key_Escape)
EndIf
-> Geht
Denke also, dass es sich um einen Bug in KeyboardInkey() handelt, der bei PB 3.94 nicht auftritt. Es wird bei Windowed Screens keine Großschreibung angenommen.
Verfasst: 05.04.2006 13:34
von bobobo
und so geht's auch
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenWindow(0, 10, 10, 800, 600, "Test", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
If OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
Repeat
FlipBuffers()
ClearScreen($000000)
ExamineKeyboard()
While WindowEvent():Wend ; <<-- WICHTIG ****
FullText$ + KeyboardInkey() ; fügt das nächste Zeichen zum aktuellen Text (sofern vorhanden) hinzu
; Wenn wir die 'Backspace'-Taste drücken, löschen wir das letzte Zeichen
;
If KeyboardReleased(#PB_Key_Back)
FullText$ = Left(FullText$, Len(FullText$)-1)
EndIf
; Ergebnis darstellen
;
If StartDrawing(ScreenOutput())
DrawingMode(1)
DrawText(20, 20, "Gib einfach etwas Text ein...:", $00FF88)
DrawText(20, 40, FullText$, $00FF88)
StopDrawing()
EndIf
Until KeyboardPushed(#PB_Key_Escape)
EndIf
Verfasst: 12.04.2006 13:51
von Batze
oh, sorry, hatte ganz übersehen dass jemand geantwortet hat.
Danke bobobo.
Trotzdem ging der Code vor PB 4 noch, also sieht es für mich nach einem Bug aus.
Kann aber natürlich auch sein, dass sich die Funktionsweise der Keyboardbefehle geändert hat.
Verfasst: 12.04.2006 13:53
von bobobo
das While WindowEvent():Wend MUSS nach dem Examinekeyboard() rein .. ist halt neuerdings so
hab das übrigens aus dem englischen Forum.
Verfasst: 13.04.2006 10:45
von Batze
kann leider nicht so toll englisch um mich da durch zu schlagen.
Soll jetzt heißen, dass das früher eigentlich auch falsch war, aber es trotzdem ging?
Naja egal, die Windoweventabfrage muss ich eh einbauen.
Verfasst: 13.04.2006 11:00
von Kaeru Gaman
bobobo hat geschrieben:das While WindowEvent():Wend MUSS nach dem Examinekeyboard() rein .. ist halt neuerdings so
is dir zufällig bekannt, warum?
Verfasst: 13.04.2006 11:13
von bobobo
Verfasst: 13.04.2006 11:34
von Kaeru Gaman
hm.. strange strange...
windows sind halt echt nich meine profession...
...ich speichers mal im hinterkopf...
im moment arbeite ich noch nich mit 4.0...
ich frag mich halt nur grad, wie dann ne "normale" keyboardabfrage parallel zu dem üblichen check vom close-button realisiert werden soll...
Verfasst: 13.04.2006 17:50
von bobobo
normal genug?
Code: Alles auswählen
Enumeration
#Window_0
#Button_0
#Button_1
#Text_0
#depressed
EndEnumeration
If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 ),#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar")
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Button_0, 20, 130, 180, 60, "OK")
ButtonGadget(#Button_1, 300, 130, 160, 60, "KO")
TextGadget(#Text_0, 90, 30, 330, 50, "Drück mal ein D auf der Tastatur")
EndIf
EndIf
AddKeyboardShortcut(#Window_0,#PB_Shortcut_D,#depressed)
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event=#PB_Event_Menu And EventMenu()=#depressed
Debug #depressed
w+1
Select w
Case 1
SetGadgetText(#Button_0,"KO")
SetGadgetText(#Button_1,"OK")
Case 2
SetGadgetText(#Button_0,"OK")
SetGadgetText(#Button_1,"KO")
w=0
EndSelect
EndIf
If Event = #PB_Event_Gadget
If GadgetID = #Button_0 And w=1
MessageRequester("So","Das hast Du nun davon",#MB_ICONSTOP)
ElseIf GadgetID = #Button_1 And w=0
MessageRequester("So","Das hast Du nun davon",#MB_ICONSTOP)
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End