[bb] Input "field" by Yahfree [ 1+ years ago ]

Started by BlitzBot, June 29, 2017, 00:28:41

Previous topic - Next topic

BlitzBot

Title : Input "field"
Author : Yahfree
Posted : 1+ years ago

Description : 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:


Code :
Code (blitzbasic) Select
;-----------------------------------------------------------------------------------------------------
;   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
scode = scanc
skey$ = Lower$(Mid$("1234567890-=QWERTYUIOP[]ASDFGHJKL;'XCVBNM,./* 789-456+1230.,/", tel, 1))
supkey$ = 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(scode) Then down = scode: 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$ = selupkey$
Else
sc$ = selkey$
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...