I am trying to use keyboarddialog to create a simple keyboard to have user enter an email address. Nothing special.
function setemail() ?"IN SETEMAIL" keyboarddialog = createObject("roSGNode", "KeyboardDialog") keyboarddialog.title= "Enter Email Address" keyboarddialog.visible = true keyboarddialog.buttons=["Continue","Cancel"] m.key=keyboarddialog.keyboard m.key.showTextEditBox= true m.top.setFocus(true) m.top.dialog = keyboarddialog return m.key.text end function
Function onKeyEvent(key as String, press as Boolean) as Boolean button_val = m.top.dialog.buttonSelected if not press then if key = "OK" if(button_val = 0) ?"EMAIL "m.key.text m.top.dialog.close = true return true else if (button_val = 1) Print "CANCEL" m.top.dialog.close = true return true end if end if end if return FALSE end function
My problem lies in the onKey function. Each time I press OK to accept the character for the email, the onKey fires of course executing the button_val=0 so I never get the complete email put in because of this. Can somebody guide me as to fixing this? Thanks
Have you tried doing what the documentation recommends?
Typically, you will want to set the KeyboardDialog node title field to prompt the user to enter the string, and add "OK" and "Cancel" buttons by setting the Dialog node buttons field to [ "OK", "Cancel" ], then observe the Dialog node class buttonSelected field to react when the user presses one of those buttons. At any time, the text field can be accessed to obtain the string entered by the user.
i.e. observe the buttonSelected field rather than listening for each individual keypress.