Inputrequester bei einem Screen
Verfasst: 10.04.2005 15:57
Hi Leutz hab einen Screen und möchte das der User einen Namen eingibt. Der Inputrequester funktioniert nicht, gibt es eine Alternative?
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Für Screens gibt es bei PB/Windows die Funktion KeyboardInkey().zigapeda hat geschrieben:Hi Leutz hab einen Screen und möchte das der User einen Namen eingibt. Der Inputrequester funktioniert nicht, gibt es eine Alternative?
Code: Alles auswählen
;
; simple screen input example
;
; by Danilo, 2005/04/11, german forum
;
#ScreenWidth = 1024
#ScreenHeight = 768
#ScreenName = "Input Test"
Procedure.s InputProcedure(x,y)
Static Name$, LastCursorTime, ShowCursor, BackPushed
; Input holen
Name$ + KeyboardInkey()
; Backspace erlauben zum loeschen
If KeyboardPushed(#PB_Key_Back) And BackPushed=0
Name$ = Left(Name$,Len(Name$)-1)
BackPushed=ElapsedMilliseconds()
ElseIf BackPushed
If ElapsedMilliseconds() >= BackPushed+150
BackPushed=0
EndIf
EndIf
; Laenge begrenzen
len=Len(Name$)
If len>25
Name$ = Left(Name$,len-1)
EndIf
; Fenster zeichnen
If StartDrawing(ScreenOutput())
Box(x+5,y+5,300,100,$404040)
Box(x,y,300,100,$D7D628)
Box(x,y,300,22,$579FA8)
Line(x ,y,300, 0,$FFFFFF):Line(x,y , 0,100,$FFFFFF)
Line(x+300,y, 0,100,$000000):Line(x,y+100,300, 0,$000000)
Locate(x+2,y+2)
DrawingMode(1)
DrawText("Bitte Name eingeben")
Box(x+09,y+29,282,24,$000000)
Box(x+10,y+30,280,22,$FFFFFF)
Locate(x+13,y+33)
DrawText(Name$)
; cursor blinken lassen
time = ElapsedMilliseconds()
If time >= LastCursorTime+500
LastCursorTime=time
ShowCursor ! 1
EndIf
; cursor zeichnen
If ShowCursor
;Line(x+13+TextLength(Name$),y+32,0,18,$000000)
Line(x+13+TextLength(Name$),y+50,10,0,$000000)
EndIf
StopDrawing()
EndIf
If KeyboardReleased(#PB_Key_Return) And Name$
ProcedureReturn Name$
EndIf
EndProcedure
If InitSprite()=0 Or InitKeyboard()=0
MessageRequester("ERROR","Cant initialize game engine!"):End
EndIf
If OpenScreen(#ScreenWidth,#ScreenHeight,32,#ScreenName)=0
If OpenScreen(#ScreenWidth,#ScreenHeight,24,#ScreenName)=0
If OpenScreen(#ScreenWidth,#ScreenHeight,16,#ScreenName)=0
MessageRequester("ERROR","Cant open screen ("+Str(#ScreenWidth)+"x"+Str(#ScreenHeight)+")!"):End
EndIf:EndIf:EndIf
Repeat
ExamineKeyboard()
If IsScreenActive()
FlipBuffers()
ClearScreen($3A,$65,$98)
If Status = 0
Name$ = InputProcedure(#ScreenWidth/2-150,#ScreenHeight/2-50)
If Name$
Status+1
EndIf
Else
If StartDrawing(ScreenOutput())
FrontColor($FF,$FF,$FF)
DrawingMode(1)
Locate(100,100): DrawText("Ihre Eingabe:")
Locate(100,130): DrawText("Vielen Dank! Bitte drcken sie eine Taste...")
FrontColor($00,$00,$00)
Locate(200,100): DrawText(Name$)
StopDrawing()
EndIf
If KeyboardPushed(#PB_Key_All)
Quit=#TRUE
EndIf
EndIf
EndIf
Until Quit