Code archives/User Input/Input "field"

This code has been declared by its author to be Public Domain code.

Download source code

Input "field" by Yahfree2007
This is a basic input field function, Credits to B23 for the "iGetKey()" function and the "InitGetkey()" function.

put all 3 of these functions with the data and types in a include file before the program

to use this, Call the "InitGetKey()" before the main loop and then set up a veriable to get fed info from the "CreateInputBox()" function

the Arguments of the CreateInputBox() function are the following

YourString=CreateInputBox(Box_X, Box_Y, Box_Width, Useable/true/false?, YourString)

Heres a demo:
;-----------------------------------------------------------------------------------------------------
;											   Types
;-----------------------------------------------------------------------------------------------------
	
;Type To hold scancodes
Type ScanCode
	Field code
	Field key$
	Field upkey$
End Type

;-----------------------------------------------------------------------------------------------------
;											InitGetKey()
;-----------------------------------------------------------------------------------------------------
;reads all scancodes into ScanCode type
Function InitGetKey()


	;read scancodes
	tel = 1
	Restore scancodez
	Repeat
		Read scanc
		If scanc = -1 Then Exit
		s.ScanCode = New ScanCode
		s\code = scanc
		s\key$ = Lower$(Mid$("1234567890-=QWERTYUIOP[]ASDFGHJKL;'\ZXCVBNM,./* 789-456+1230.,/", tel, 1))
		s\upkey$ = Mid$("!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:" + Chr$(34) + "|ZXCVBNM<>?* 789-456+1230.,/", tel, 1)
		tel = tel + 1
	Forever

End Function

Global oldkdown
;-----------------------------------------------------------------------------------------------------
;											iGetKey()
;-----------------------------------------------------------------------------------------------------
;imitates GetKey() using scancodes
Function iGetKey()

	;backspace
	If KeyDown(14) Then 
		If oldkdown <> 8 Then oldkdown = 8: Return 8
		oldkdown = 8: Return
	End If

	;enter
	If KeyDown(28) Or KeyDown(156) Then 
		If oldkdown <> 13 Then oldkdown = 13: Return 13
		oldkdown = 13: Return
	End If
	
	;check what key is down
	sel.ScanCode = Null
	down = -1
	For s.ScanCode = Each ScanCode
		If KeyDown(s\code) Then down = s\code: sel = s: Exit
	Next
	If down = oldkdown Then Return
	oldkdown = down

	;if no valid key is selected, exit	
	If sel = Null Then Return 0

	;shift for uppercase	
	If KeyDown(42) Or KeyDown(54) Then
		sc$ = sel\upkey$
	Else
		sc$ = sel\key$
	End If

	;return ascii value of key	
	Return Asc(sc$)

End Function


;-------------------------------------------------------------------------------------------------------
;                                          CreateInputBox()
;-------------------------------------------------------------------------------------------------------

Function CreateInputBox$(box_x,box_y,box_w,useable,returnstr$)
	
	Rect box_x, box_y, box_w,20, False

If useable=True
   key=iGetKey()
	
   Rect box_x+3+Len(returnstr$)*9,box_y+2,1,17,1
		
	
  If (key=>48 And key=<57) Or (key>=65 And key<=90) Or (key>=97 And key<=122)
     If(Len(returnstr$)<box_w/10)
        returnstr$ = returnstr$ + Chr(key)
				
				
End If
  End If
	  End If


If useable=True
If KeyHit(14)
   If Len(returnstr$)>0 returnstr$=Left(returnstr$,Len(returnstr$)-1)
End If
If KeyHit(57)
  returnstr$=returnstr$+" "
End If
End If


	Text box_x+3,box_y, returnstr$

	Return(returnstr$)
	
		
End Function



;-------------------------------------------------------------------------------------------------------
                                       ;Data stuff
;-------------------------------------------------------------------------------------------------------
.scancodez
Data 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
Data 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
Data 26, 27, 30, 31, 32, 33, 34, 35, 36, 37, 38
Data 39, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51
Data 52, 53, 55, 57, 71, 72, 73, 74, 75, 76, 77
Data 78, 79, 80, 81, 82, 83, 179, 181, -1



;-----------------------------------------------------------------------
;                                       PROGRAM
;-----------------------------------------------------------------------

;Include "FunctionLibary.bb"

Graphics 400,300,16,2
SetBuffer BackBuffer()

InitGetKey()

mystring$=""
mystring2$=""
mystring3$=""

tf=False
tf2=False
tf3=False

controller=1

While Not KeyHit(1)
Cls

;CreateInputBox(box_x,box_y,box_w,box_h,useable,strng$)
mystring = CreateInputBox(0,0,300,tf,mystring$)
mystring2=CreateInputBox(0,30,300,tf2,mystring2$)
mystring3=CreateInputBox(0,60,300,tf3,mystring3$)


Select controller
Case 1
tf=True
tf2=False
tf3=False
Case 2
tf2=True
tf3=False
tf=False
Case 3
tf3=True
tf=False
tf2=False
End Select


If KeyHit(200)
controller = controller + 1
End If

If controller > 3  controller=1



Text 0,280,"TF: "+tf
Text 60,280,"TF2: "+tf2
Text 120,280,"TF3: "+tf3



Delay 5
Flip
Wend
End

Comments

None.

Code Archives Forum