Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

How can I tell if Shift is being held down in a doubleclick handler 1

Status
Not open for further replies.

astrohart

Technical User
Mar 14, 2012
2
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.
 
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;
}
 
Correction to my previous code; the if statement should read:
Code:
  if (Shift.Contains(ssShift))
 
Thank you, the tip worked and was very helpful.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top