IonicWind Software

IWBasic => General Questions => Topic started by: Andy on January 29, 2012, 02:17:58 AM

Title: Detecting enter key on a button
Post by: Andy on January 29, 2012, 02:17:58 AM
Hi,

Propably a simple question but I can't see why this doesn't work
I'm trying to detect when the enter / tab key is pressed for a button.

WINDOW win
OPENWINDOW win,0,0,295,250,0,0,"Caption",&handler
CONTROL win,@EDIT,"Press Enter or TAB",83,39,124,27,0x50800000|@CTEDITAUTOH,5
CONTROL win,@EDIT,"Press Enter or TAB",83,100,124,27,0x50800000|@CTEDITAUTOH,6
CONTROL win,@BUTTON,"OK",83,140,100,27,@TABSTOP,7
SETFONT win,"Ariel",9,400,0,5
SETCONTROLNOTIFY(win,5,1,1)
SETCONTROLNOTIFY(win,6,1,1)
SETCONTROLNOTIFY(win,7,1,1)
SETFOCUS win,5
WAITUNTIL win=0
END

SUB handler
SELECT @MESSAGE
   CASE @IDCONTROL
      IF @CONTROLID = 5
         SELECT @NOTIFYCODE
            CASE @ENENTERKEY
               MESSAGEBOX win,GETCONTROLTEXT(win,5),"Enter Pressed!"
               SETFOCUS win,6
            CASE @ENTABKEY
               MESSAGEBOX win,"Tab key pressed","Info"
               SETFOCUS win,6
         ENDSELECT
      ENDIF

      IF @CONTROLID = 6
         SELECT @NOTIFYCODE
            CASE @ENENTERKEY
               'MESSAGEBOX win,GETCONTROLTEXT(win,6),"Enter Pressed!"
               SETFOCUS win,7
            CASE @ENTABKEY
               MESSAGEBOX win,"Tab key pressed","Info"
               SETFOCUS win,7
         ENDSELECT
      ENDIF

      IF @CONTROLID = 7
         SELECT @NOTIFYCODE
            CASE @ENENTERKEY
               MESSAGEBOX win,GETCONTROLTEXT(win,7),"Enter Pressed!"
               SETFOCUS win,7
            CASE @ENTABKEY
               MESSAGEBOX win,"Tab key pressed","Info"
               SETFOCUS win,7
         ENDSELECT
      ENDIF


   CASE @IDCREATE
      CENTERWINDOW win
   CASE @IDCLOSEWINDOW
      CLOSEWINDOW win
ENDSELECT
RETURN 0
ENDSUB

If I change

CONTROL win,@BUTTON,"OK",83,140,100,27,@TABSTOP,7

with

CONTROL win,@CHECKBOX,"OK",83,140,100,27,@TABSTOP,7

it works, any ideas how to modify this so the button detects the enter key?

Thanks,
Andy.
Title: Re: Detecting enter key on a button
Post by: aurelCB on January 29, 2012, 03:24:40 AM
Hi Andy ...
Tabstop don't have efect on window...
Do you mean something like this:
WINDOW win
INT focus5,focus6,focus7
OPENWINDOW win,0,0,295,250,0,0,"Caption",&handler
CONTROL win,@EDIT,"Press Enter or TAB",83,39,124,27,0x50800000|@CTEDITAUTOH|@tabstop,5
CONTROL win,@EDIT,"Press Enter or TAB",83,100,124,27,0x50800000|@CTEDITAUTOH|@tabstop,6
CONTROL win,@BUTTON,"OK",83,140,150,27,@tabstop,7
SETFONT win,"Ariel",9,400,0,5
SETCONTROLNOTIFY(win,5,1,1)
SETCONTROLNOTIFY(win,6,1,1)
SETCONTROLNOTIFY(win,7,1,1)
'SETFOCUS win,5
WAITUNTIL win=0
END

SUB handler
SELECT @MESSAGE
   CASE @IDCONTROL

      IF @CONTROLID = 5
         SELECT @NOTIFYCODE
            CASE @ENENTERKEY
               SETCONTROLCOLOR win,7,rgb(200,200,250),rgb(80,80,100)
SETCONTROLTEXT win,7,"ENTER Pressed!"
            CASE @ENTABKEY
SETCONTROLCOLOR win,7,rgb(200,200,0),rgb(0,0,0)
SETCONTROLTEXT win,7,"TAB Pressed!"
setfocus win,6:focus5=0:focus6=1:focus7=0
IF focus6=1
SETCONTROLCOLOR win,6,rgb(0,0,0),rgb(240,240,230)
SETCONTROLCOLOR win,5,rgb(0,0,0),rgb(255,255,255)
ENDIF
         ENDSELECT
      ENDIF

      IF @CONTROLID = 6
         SELECT @NOTIFYCODE
            CASE @ENENTERKEY
               SETCONTROLCOLOR win,7,rgb(200,200,250),rgb(80,80,100)
SETCONTROLTEXT win,7,"ENTER Pressed!"
            CASE @ENTABKEY
SETCONTROLCOLOR win,7,rgb(200,200,0),rgb(0,0,0)
SETCONTROLTEXT win,7,"TAB Pressed!"
               setfocus win,5:focus5=1:focus6=0:focus7=0
IF focus5=1
SETCONTROLCOLOR win,5,rgb(0,0,0),rgb(240,240,230)
SETCONTROLCOLOR win,6,rgb(0,0,0),rgb(255,255,255)
ENDIF
         ENDSELECT
      ENDIF

      IF @CONTROLID = 7
         
      ENDIF


   CASE @IDCREATE
      CENTERWINDOW win
   CASE @IDCLOSEWINDOW
      CLOSEWINDOW win
ENDSELECT
RETURN 0
ENDSUB
Title: Re: Detecting enter key on a button
Post by: Andy on January 29, 2012, 03:43:04 AM
Hi,

Thanks for trying, i'm after detecting the enter key press only when the focus is set to the button.

In the example posted the enter key is pressed and the focus moves to the next edit box and so on, but when the focus moves to the button I cannot detect the enter key whilst the focus is on the button.

Thanks for trying!  :)
Andy.
Title: Re: Detecting enter key on a button
Post by: ckoehn on January 29, 2012, 08:09:35 AM
This is how you enable TABSTOPS.  Not sure about ENTER on a Button control.

WINDOW win
OPENWINDOW win,0,0,295,250,0,0,"Caption",&handler
CONTROL win,@EDIT,"Press Enter or TAB",83,39,124,27,0x50800000|@CTEDITAUTOH|@TABSTOP,5 'added @TABSTOP
CONTROL win,@EDIT,"Press Enter or TAB",83,100,124,27,0x50800000|@CTEDITAUTOH|@TABSTOP,6 'added @TABSTOP
CONTROL win,@BUTTON,"OK",83,140,100,27,@TABSTOP,7
ENABLETABS win,1 'added this
SETFONT win,"Ariel",9,400,0,5
SETCONTROLNOTIFY(win,5,1,1)
SETCONTROLNOTIFY(win,6,1,1)
SETCONTROLNOTIFY(win,7,1,1)
SETFOCUS win,5
WAITUNTIL win=0
END

SUB handler
SELECT @MESSAGE
   CASE @IDCONTROL
      IF @CONTROLID = 5
         SELECT @NOTIFYCODE
            CASE @ENENTERKEY
               MESSAGEBOX win,GETCONTROLTEXT(win,5),"Enter Pressed!"
               SETFOCUS win,6
            CASE @ENTABKEY
               MESSAGEBOX win,"Tab key pressed","Info"
               SETFOCUS win,6
         ENDSELECT
      ENDIF

      IF @CONTROLID = 6
         SELECT @NOTIFYCODE
            CASE @ENENTERKEY
               'MESSAGEBOX win,GETCONTROLTEXT(win,6),"Enter Pressed!"
               SETFOCUS win,7
            CASE @ENTABKEY
               MESSAGEBOX win,"Tab key pressed","Info"
               SETFOCUS win,7
         ENDSELECT
      ENDIF

      IF @CONTROLID = 7
         SELECT @NOTIFYCODE
            CASE @ENENTERKEY
               MESSAGEBOX win,GETCONTROLTEXT(win,7),"Enter Pressed!"
               SETFOCUS win,7
            CASE @ENTABKEY
               MESSAGEBOX win,"Tab key pressed","Info"
               SETFOCUS win,7
         ENDSELECT
      ENDIF


   CASE @IDCREATE
      CENTERWINDOW win
   CASE @IDCLOSEWINDOW
      CLOSEWINDOW win
ENDSELECT
RETURN 0
ENDSUB


Later,
Clint
Title: Re: Detecting enter key on a button
Post by: Andy on January 30, 2012, 12:24:20 AM
Clint,

Thanks for having a look and trying, i'm ok with tabbing the @tabstop was just included because I copied the entire line from another program, no other reason.

Yes, it's the enter key on a button control I'm trying to find, no luck yet!

Thanks,
Andy.
Title: Re: Detecting enter key on a button
Post by: Andy on February 02, 2012, 06:26:52 AM

Hi,

Problem solved!!

Well i've found away to detect the Enter key for a button, to test it just press Enter when the 'OK' button changes to black.

Hope this helps everyone! :)