Link to home
Start Free TrialLog in
Avatar of JohnRock
JohnRock

asked on

Tab order

I want the tab key to be associated with the Return key.If I had 3 text boxes on a form and my focus was on the first text box and I hit the enter key, I would like the tab to jump to the next text box. The keypress and keydown events don't capture the enter or tab key.
ASKER CERTIFIED SOLUTION
Avatar of deighton
deighton
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
'If you do this as well in the same code

Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then KeyAscii = 0
End Sub
2 ways:

Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
        KeyAscii = 0
        SendKeys "{TAB}"
    End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
        KeyAscii = 0
        Text3.SetFocus
    End If
End Sub
Avatar of caraf_g
caraf_g

"I want the tab key to be associated with the Return key"

No you don't. Not if you want your application to behave like a good windoze application.

Depends on the application.  It's nice to use ENTER to move between single-line fields when entering data.  QuickBooks does this, for example.
Erick, do you really think so?

Compare

Test{left pinky}more text{left pinky}more text{left pinky}

to

Test{right pinky}more text{right pinky}more text{right pinky}

Much the same. Except, one is standard windows behaviour, the other is something that dates back to the good old days of DOS.

And I think it's time we left those days behind us.
I'm not a touch typer, so it's easier for me to find the Enter key than the Tab key.
A single line TextBox does not use the Enter key anyway, so why not give it a use?  
The user will discover this very quickly and either use it or not.  The Tab functionality is not discarded.
Haha, no Erick, that one won't wash with me.

If you're into mass data entry, believe me, you *are* a touch typist.

<wink>
here od, iu exa.p;w of tpivj tuopmg

translated:
here is my example of touch typing
:)

<g>
That should have been

\jrtr od ,u rcs,[;r pg yupivj yu[omh/
Or...

Y843B 8W J6 3SQJ0O3 9R 65697DY 56038HTL

(complete with a typing mistake, I think)

But seriously.... If you go to a place where they employ people whose job it is to enter large amounts of data, you can rest assured that they *will* employ touch typists to do the job.

Yes, I'll admit it... I am a touch typist. But I therefore can appreciate how easy it is to adapt to such a slight difference as changing from using your right pinky to your left pinky. It'll take an experienced touch typist at most a day to get used to it.
Using <enter> as <tab> is ok. Using <tab> as <enter> is a no-no.

You can't easily intercept <tab> as it's not normally passed in the key events (It *is* but only if no control has the .TabStop property set True).

M
If I understand the question correctly, JohnRock wants to make the Enter key act as the Tab key.

"... I hit the enter key, I would like the tab to jump to the next text box"
Yep. I don't see a problem with that. I think you can do it at the form level if you set the forms KeyPreview to True then you can have:

private sub Form_KeyDown(keyascii as integer...)
if keyascii = vbEnter then keyascii = vbTab
end sub

I *think* that will work - haven't tested it.

M