Board index » delphi » HowTo Detect Ctrl-PgUp and Ctrl-PgDn

HowTo Detect Ctrl-PgUp and Ctrl-PgDn

Hi,

I am having problem detecting the Ctrl-PgUp and Ctrl-PgDn keys.  What
I have done is set the Form1.KeyPreview to True and attach the
following codes to the Form1.KeyDown Event handler.

The following code can detect only a single key, not 2 keys pressed
simultaneously.  Why?  Any help will be appreciated.

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if (Key And vk_Control = vk_Control) then begin
      if (Key And vk_Prior = vk_Prior) then
         showMessage('Yes, in Page UP')
      else if (Key And vk_Prior = vk_Next) then
         showMessage('Yes, in Page Down');
      exit;
   end;
   case Key of
      vk_LButton   : Showmessage('vk_LButton  ');
      vk_RButton   : Showmessage('vk_RButton  ');
      vk_Cancel    : Showmessage('vk_Cancel   ');
      vk_MButton   : Showmessage('vk_MButton  ');
      vk_Back      : Showmessage('vk_Back     ');
      vk_Tab       : Showmessage('vk_Tab      ');
      vk_Clear     : Showmessage('vk_Clear    ');
      vk_Return    : Showmessage('vk_Return   ');
      vk_Shift     : Showmessage('vk_Shift    ');
      vk_Control   : Showmessage('vk_Control  ');
      vk_Menu      : Showmessage('vk_Menu     ');
      vk_Pause     : Showmessage('vk_Pause    ');
      vk_Capital   : Showmessage('vk_Capital  ');
      vk_Escape    : Showmessage('vk_Escape   ');
      vk_Space     : Showmessage('vk_Space    ');
      vk_Prior     : Showmessage('vk_Prior    ');
      vk_Next      : Showmessage('vk_Next     ');
      vk_End       : Showmessage('vk_End      ');
      vk_Home      : Showmessage('vk_Home     ');
      vk_Left      : Showmessage('vk_Left     ');
      vk_Up        : Showmessage('vk_Up       ');
      vk_Right     : Showmessage('vk_Right    ');
      vk_Down      : Showmessage('vk_Down     ');
      vk_Select    : Showmessage('vk_Select   ');
      vk_Print     : Showmessage('vk_Print    ');
      vk_Execute   : Showmessage('vk_Execute  ');
      vk_SnapShot  : Showmessage('vk_SnapShot ');
      vk_Insert    : Showmessage('vk_Insert   ');
      vk_Delete    : Showmessage('vk_Delete   ');
      vk_Help      : Showmessage('vk_Help     ');
      vk_NumPad0   : Showmessage('vk_NumPad0  ');
      vk_NumPad1   : Showmessage('vk_NumPad1  ');
      vk_NumPad2   : Showmessage('vk_NumPad2  ');
      vk_NumPad3   : Showmessage('vk_NumPad3  ');
      vk_NumPad4   : Showmessage('vk_NumPad4  ');
      vk_NumPad5   : Showmessage('vk_NumPad5  ');
      vk_NumPad6   : Showmessage('vk_NumPad6  ');
      vk_NumPad7   : Showmessage('vk_NumPad7  ');
      vk_NumPad8   : Showmessage('vk_NumPad8  ');
      vk_NumPad9   : Showmessage('vk_NumPad9  ');
      vk_Multiply  : Showmessage('vk_Multiply ');
      vk_Add       : Showmessage('vk_Add      ');
      vk_Separator : Showmessage('vk_Separator');
      vk_Subtract  : Showmessage('vk_Subtract ');
      vk_Decimal   : Showmessage('vk_Decimal  ');
      vk_Divide    : Showmessage('vk_Divide   ');
      vk_F1        : Showmessage('vk_F1       ');
      vk_F2        : Showmessage('vk_F2       ');
      vk_F3        : Showmessage('vk_F3       ');
      vk_F4        : Showmessage('vk_F4       ');
      vk_F5        : Showmessage('vk_F5       ');
      vk_F6        : Showmessage('vk_F6       ');
      vk_F7        : Showmessage('vk_F7       ');
      vk_F8        : Showmessage('vk_F8       ');
      vk_F9        : Showmessage('vk_F9       ');
      vk_F10       : Showmessage('vk_F10      ');
      vk_F11       : Showmessage('vk_F11      ');
      vk_F12       : Showmessage('vk_F12      ');
      vk_F13       : Showmessage('vk_F13      ');
      vk_F14       : Showmessage('vk_F14      ');
      vk_F15       : Showmessage('vk_F15      ');
      vk_F16       : Showmessage('vk_F16      ');
      vk_F17       : Showmessage('vk_F17      ');
      vk_F18       : Showmessage('vk_F18      ');
      vk_F19       : Showmessage('vk_F19      ');
      vk_F20       : Showmessage('vk_F20      ');
      vk_F21       : Showmessage('vk_F21      ');
      vk_F22       : Showmessage('vk_F22      ');
      vk_F23       : Showmessage('vk_F23      ');
      vk_F24       : Showmessage('vk_F24      ');
      vk_NumLock   : Showmessage('vk_NumLock  ');
      vk_Scroll    : Showmessage('vk_Scroll   ');
   end;
end;

TIA

---

Sam
w...@usa.net

 

Re:HowTo Detect Ctrl-PgUp and Ctrl-PgDn


test for ssCtrl in Shift

see the TShiftState Help

Quote
On Thu, 19 Dec 1996 19:59:26 GMT, w...@usa.net (Sam) wrote:
>Hi,

>I am having problem detecting the Ctrl-PgUp and Ctrl-PgDn keys.  What
>I have done is set the Form1.KeyPreview to True and attach the
>following codes to the Form1.KeyDown Event handler.

>The following code can detect only a single key, not 2 keys pressed
>simultaneously.  Why?  Any help will be appreciated.

>procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
>  Shift: TShiftState);
>begin

// put this test in here somewhere
   if ssCtrl in Shift then
Quote
>   if (Key And vk_Control = vk_Control) then begin
>      if (Key And vk_Prior = vk_Prior) then
>         showMessage('Yes, in Page UP')
<snip>
>Sam
>w...@usa.net

Other Threads