Smart questions
Smart answers
Smart people
INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Member Login

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips now!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

Join Tek-Tips
*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

LINK TO THIS FORUM!

Add Stickiness To Your Site By Linking To This Professionally Managed Technical Forum.
Just copy and paste the
code below into your site.

Partner With Us!

"Best Of Breed" Forums Add Stickiness To Your Site
Partner Button
(Download This Button Today!)

Feedback

"...it was ingeniously designed and all those clicks were for my own good... and that was even before I got my speedy and useful answer to my tekkie question that I eventually posted..."

Geography

Where in the world do Tek-Tips members come from?

How can I tell if Shift is being held down in a doubleclick handlerHelpful Member! 

astrohart (TechnicalUser)
14 Mar 12 19:19
I am using Borland C++ Builder 5 on WinXP.

I am detecting whether the user double-clicks in a grid cell on my form and i have handled the appropriate double-click event.

Now i have to make sure and only respond if the user double-clicks whilst holding down the 'shift' key.  How would this be done?

Thanks for any insights.
Helpful Member!  Prattaratt (TechnicalUser)
14 Mar 12 20:22
In your TMouseEvent variable type there is a shiftstate field;  it determines if the shift, ctrl and or alt keys are pressed at the time of the event. What I suggest is you trap the mousedown event; if the shift key is pressed, then set a private class boolean variable to true and to false if the shift key is not pressed. Then check that variable's state in your doubleclick handler.

CODE

-----------------------.h file ----------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
  void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
private:    // User declarations
  boolean ShiftKeyPressed;
public:        // User declarations
  __fastcall TForm1(TComponent* Owner);
};
-----------------------.cpp file --------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
  if (Shift && ssShift)
    ShiftKeyPressed = true;
  else
    ShiftKeyPressed = false;
}
 
Prattaratt (TechnicalUser)
14 Mar 12 20:27
Correction to my previous code; the if statement should read:

CODE

  if (Shift.Contains(ssShift))
astrohart (TechnicalUser)
15 Mar 12 19:12
Thank you, the tip worked and was very helpful.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members!

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close