psmenu - simple menu to select a menu item
Modified on 2017/09/23 06:56 by Peter63 — Categorized as: Arrays, Control, Program Flow, Strings
'
' MMBasic DOS 5-04-05 Beta 7
'
' psmenu - version 1
'
' by Peter Svard , 2017.09.22
'
'
- Show how to use psmenu Sub (and psmenuinit)
Colour 7,0
Cls
' setup variables for psmenu
Const psmmax = 10 ' max menu items
Dim psmt(psmmax) As string ' create menu array
Dim eKey As integer ' return eKey-code
Dim mindex As integer ' return menu index
' notes: change menutext using Sub psmenuinit
Cursor 3,2:Print "psmenu Use cursor Up or Down to move. Press Enter or ESC to exit."
psmenu 3,5,7,0,eKey,mindex
Cursor 0,18
Print "
- Return code from psmenu
-"
Print " menu index = ";mindex
Print " exit eKey = ";eKey
End
'
'
- psmenu
-
' col,row = menu position
' fc,bc = colour foreground, background
' eKey = return key ( 13=Enter, 27=ESC-key)
' mindex = return menu index
Sub psmenu(col As integer,row As integer,fc As integer,bc As integer, eKey As integer, mindex As integer)
psmenuinit
Local i As integer
Local t As integer ' inkey$ key-code
' print out the menu
Colour fc,bc
For i=0 To psmmax-1
Cursor col,row+i
Print psmt(i+1)
Next i
i = 0 ' start at first menu item (0=first item)
Colour bc,fc ' show menu cursor
Cursor col,row+i
Print psmt(i+1);
'
- main menu loop start ---
Do
t=Asc(Inkey$) ' wait for a Key
If t=13 Or t=27 Then ' Enter or ESC-key
eKey=t ' return eKey-code
mindex=i+1 ' return menu index
Exit Do
End If
If t=128 Or t=129 Then ' cursor Up or Down
Colour fc,bc ' clear menu cursor
Cursor col,row+i
Print psmt(i+1)
If t=128 And i>0 Then i=i-1 ' Up
If t=129 And i
Colour bc,fc ' show menu cursor
Cursor col,row+i
Print psmt(i+1);
End If
Loop
Colour 7,0 ' return to default colour
End Sub
Sub psmenuinit()
' add menu text here
psmt(1)=" 1. menu item one "
psmt(2)=" 2. menu item two "
psmt(3)=" 3. menu item three "
psmt(4)=" 4. menu item four "
psmt(5)=" 5. menu item five "
psmt(6)=" 6. menu item six "
psmt(7)=" 7. menu item seven "
psmt(8)=" 8. menu item eight "
psmt(9)=" 9. menu item nine "
psmt(10)=" 10. menu item ten "
End Sub