Link to home
Start Free TrialLog in
Avatar of aluiken
aluiken

asked on

Tab Capture

Hi,

How can i trap the tab-key like a normal key instead of switching to the next control ? (TCustomEdit)

Kind regards,
Arijan
Avatar of viktornet
viktornet
Flag of United States of America image

It's already doing that.... It's alwayus as a tab, and you can change it so it goes to the next control...
Avatar of aluiken
aluiken

ASKER

No, i want to use the tab key, if i write a proc for keypress or keydown then i can not trap this key. I want to use the tab key for a function in the control..
ASKER CERTIFIED SOLUTION
Avatar of rene100
rene100

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
How about in OnKeyDown() I think it accepts it....like

if key = VK_TAB then
  caption := 'The was just pressed ;->';

or OnKeyPress()

if key = #9 then
  caption := 'The was just pressed ;->';

Regards,
Viktor Ivanov
Rene, I have been struggling with this problem for some time.  I have converted a complex DOS based accounting system to Windows and have been able to mimic every single aspect of DOS behavior, procedurely moving a user through an extremely complicated agricultural accounting entry,  I have done everything, shut off the mouse, used the ENTER key to set focus to predetermined  controls, and on press of the ENTER key I need to update variables, which dictate the twists and turns the entry procedure will take.  When the user presses the TAB key however, Windows responds by sending focus on,  What I need to do is intercept the actual message, at the WndProc level, modify the keycode of 9 to 13, thus tricking the system into thinking that the ENTER key had been pressed instead.  

For the sake of code maintenance I don't want to update variables in the lost focus handlers because I don't want any reverse flows updating my flow flag variables.  which SHIFT+TAB provides.  I don't doubt that I could build a huge "mousetrap" to accomplish this, but I think that using your solution technique sounds a whole lot more appealing to me.

I tried your solution, with great anticipation, but found that the wparam that gets sent from the hook to my callback procedure is always 40, not 9 for TAB, 13 for ENTER, 27 for Escape etc... as I had expected, no matter which key is pressed.  

I used your code example verbatim.  Any ideas?  I really appreciate your concise, elegant solution,  It just didn't work for me.... I haven't done a lot of message hooking and am not really up to speed on the technique.

I am familiar with writing specific message handlers and I understand how to crack a message into wparam and lparam
I also am comfortable with function pointers.

Thanks,
Paul Steinbrueck
Windows Development Leader
FarmFact Accounting System
http://www.farmfact.com