Code archives/User Input/Custom Input boxes
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Very simple design features a blinking cursor, click detection, and tab support. Arrow key movement inside the boxes would make a good addition. | |||||
AppTitle "Rpg Input Example by Eikon" Graphics 640, 320, 16, 2 SetBuffer BackBuffer() Font = LoadFont("Lucida Console", 16, 0, 0) ; Inputbox Font SetFont Font Local name$, class$, gender$ Global itotal% = 3 ; 3 Inputboxes Global aInbox% = 0, inTime%, inB% = 0 ; Active Inputbox and blink timer Dim InputBox$(itotal) ; Strings to hold input ClsColor 212, 208, 200 While Not KeyDown(1) DrawInputBoxes 50, 50 Delay 5 Flip: Cls Wend: End Function DrawInputBoxes(x, y) MX = MouseX(): MY = MouseY(): MH = MouseHit(1) inkey% = GetKey() ; Grab Input If inkey > 31 And inkey < 128 Then ; Filter out unwanted keys ; Add input to string If Len(InputBox$(aInbox)) < 9 Then InputBox$(aInbox) = InputBox$(aInbox) + Chr$(inkey) EndIf If inkey = 8 Or inkey = 4 ; Delete If Len(InputBox$(aInbox)) > 0 Then InputBox$(aInbox) = Left$(InputBox$(aInbox), Len(InputBox$(aInbox)) - 1) EndIf i = 0 For b = y To y + ((itotal - 1) * 64) Step 64 Color 128, 128, 128: Rect x, b, 100, 28, 0 ; Draw Inputbox Color 64, 64, 64: Rect x + 1, b + 1, 98, 26, 0 Color 212, 208, 200: Rect x + 1, b + 26, 98, 1: Rect x + 98, b + 1, 1, 26 Color 255, 255, 255: Rect x, b + 27, 100, 1: Rect x + 99, b, 1, 27: Rect x + 2, b + 2, 96, 24 If i = 0 Then Color 0, 128, 0 ElseIf i = 1 Then Color 0, 0, 128 Else Color 0, 0, 0 Text x + 4, b + 8, InputBox$(i) Color 0, 0, 0: If aInbox% = i ; Draw Cursor in active inbox If inB = True Then Color 0, 0, 0: Rect x + 4 + (Len(InputBox$(aInbox)) * 10), b + 4, 2, 20, 1 If MilliSecs() >= inTime + 500 Then ; Blink If inB = 0 Then inB = 1 Else inB = 0 inTime = MilliSecs() EndIf EndIf ; Mouse click Detection to change active inputbox If MH = 1 And RectsOverlap(MX, MY, 1, 1, x, b, 100, 28) Then aInbox = i Select i ; Draw Captions Case 0: Text x, b - 20, "Name:" ; Name Case 1: Text x, b - 20, "Class:" ; Class Case 2: Text x, b - 20, "Gender:" ; Gender End Select i = i + 1 Next If KeyHit(15) Then aInbox = aInbox + 1 ; Tab support If aInbox >= 3 Then aInbox = 0 End Function |
Comments
| ||
Nicely done. |
| ||
change If inB = True Then Color 0, 0, 0: Rect x + 4 + (Len(InputBox$(aInbox)) * 10), b + 4, 2, 20, 1 with this: If inB = True Then Color 0, 0, 0: Rect x + 4 + stringwidth(InputBox$(aInbox), b + 4, 2, 20, 1 This make the right position of cursor after input... |
Code Archives Forum