Board index » delphi » Trapping PgUp/PgDn

Trapping PgUp/PgDn

Happy newyear (almost/yet?) everyone,

I'm trying to trap the PgUp and PgDn keys, like:

procedure TFrmQRPreview.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  IF Key = VK_UP THEN
    BEGIN
      IF ssCtrl IN Shift THEN GoFirstPage
                         ELSE GoPrevPage;
      Key := 0;
      Exit;
    END;
  IF Key = VK_DOWN THEN
    BEGIN
      IF ssCtrl IN Shift THEN GoLastPage
                         ELSE GoNextPage;
      Key := 0;
    END;
end;  

but (!) there are no reference to VK_ constant like VK_PGUP in the
Windows units (I used the object browser to inspect it).

I must be missing something obvious here? It should be possible to trap
those keys!

Thanks,
Jan

-----------------------------------------------------------------------
Jan Doggen / Masters Software
mass...@xs4all.nl
Leiden, The Netherlands
-----------------------------------------------------------------------

 

Re:Trapping PgUp/PgDn


Hi !

PageUp       -- VK_PREV
PageDown  -- VK_NEXT

Best wishes ..

Quote
Jan Doggen wrote:
> Happy newyear (almost/yet?) everyone,

> I'm trying to trap the PgUp and PgDn keys, like:

> procedure TFrmQRPreview.FormKeyUp(Sender: TObject; var Key: Word;
>   Shift: TShiftState);
> begin
>   IF Key = VK_UP THEN
>     BEGIN
>       IF ssCtrl IN Shift THEN GoFirstPage
>                          ELSE GoPrevPage;
>       Key := 0;
>       Exit;
>     END;
>   IF Key = VK_DOWN THEN
>     BEGIN
>       IF ssCtrl IN Shift THEN GoLastPage
>                          ELSE GoNextPage;
>       Key := 0;
>     END;
> end;

> but (!) there are no reference to VK_ constant like VK_PGUP in the
> Windows units (I used the object browser to inspect it).

> I must be missing something obvious here? It should be possible to trap
> those keys!

> Thanks,
> Jan

> -----------------------------------------------------------------------
> Jan Doggen / Masters Software
> mass...@xs4all.nl
> Leiden, The Netherlands
> -----------------------------------------------------------------------

Re:Trapping PgUp/PgDn


A complete list:

Symbolic constant name
|               Value (hexadecimal)
|               |       Mouse or keyboard equivalent
|               |       |
VK_LBUTTON      01      Left mouse button
VK_RBUTTON      02      Right mouse button
VK_CANCEL       03      Control-break processing
VK_MBUTTON      04      Middle mouse button (three-button mouse)
 ?              05-07   Undefined
VK_BACK         08      BACKSPACE key
VK_TAB          09      TAB key
 ?              0A-0B   Undefined
VK_CLEAR        0C      CLEAR key
VK_RETURN       0D      ENTER key
 ?              0E-0F   Undefined
VK_SHIFT        10      SHIFT key
VK_CONTROL      11      CTRL key
VK_MENU         12      ALT key
VK_PAUSE        13      PAUSE key
VK_CAPITAL      14      CAPS LOCK key
 ?              15-19   Reserved for Kanji systems
 ?              1A      Undefined
VK_ESCAPE       1B      ESC key
 ?              1C-1F   Reserved for Kanji systems
VK_SPACE        20      SPACEBAR
VK_PRIOR        21      PAGE UP key
VK_NEXT         22      PAGE DOWN key
VK_END          23      END key
VK_HOME         24      HOME key
VK_LEFT         25      LEFT ARROW key
VK_UP           26      UP ARROW key
VK_RIGHT        27      RIGHT ARROW key
VK_DOWN         28      DOWN ARROW key
VK_SELECT       29      SELECT key
 ?              2A      Original equipment manufacturer (OEM) specific
VK_EXECUTE      2B      EXECUTE key
VK_SNAPSHOT     2C      PRINT SCREEN key for Windows 3.0 and later
VK_INSERT       2D      INS key
VK_DELETE       2E      DEL key
VK_HELP         2F      HELP key
VK_0            30      0 key
VK_1            31     1 key
VK_2            32      2 key
VK_3            33      3 key
VK_4            34      4 key
VK_5            35      5 key
VK_6            36      6 key
VK_7            37      7 key
VK_8            38      8 key
VK_9            39      9 key
 ?              3A-40   Undefined
VK_A            41      A key
VK_B            42      B key
VK_C            43      C key
VK_D            44      D key
VK_E            45      E key
VK_F            46      F key
VK_G            47      G key
VK_H            48      H key
VK_I            49      I key
VK_J            4A      J key
VK_K            4B      K key
VK_L            4C      L key
VK_M            4D      M key
VK_N            4E      N key
VK_O            4F      O key
VK_P            50      P key
VK_Q            51      Q key
VK_R            52      R key
VK_S            53      S key
VK_T            54      T key
VK_U            55      U key
VK_V            56      V key
VK_W            57      W key
VK_X            58      X key
VK_Y            59      Y key
VK_Z            5A      Z key
VK_LWIN         5B      Left Windows key (Microsoft Natural Keyboard)
VK_RWIN         5C      Right Windows key (Microsoft Natural Keyboard)
VK_APPS         5D      Applications key (Microsoft Natural Keyboard)
 ?              5E-5F   Undefined
VK_NUMPAD0      60      Numeric keypad 0 key
VK_NUMPAD1      61      Numeric keypad 1 key
VK_NUMPAD2      62      Numeric keypad 2 key
VK_NUMPAD3      63      Numeric keypad 3 key
VK_NUMPAD4      64      Numeric keypad 4 key
VK_NUMPAD5      65      Numeric keypad 5 key
VK_NUMPAD6      66      Numeric keypad 6 key
VK_NUMPAD7      67      Numeric keypad 7 key
VK_NUMPAD8      68      Numeric keypad 8 key
VK_NUMPAD9      69      Numeric keypad 9 key
VK_MULTIPLY     6A      Multiply key
VK_ADD          6B      Add key
VK_SEPARATOR    6C      Separator key
VK_SUBTRACT     6D      Subtract key
VK_DECIMAL      6E      Decimal key
VK_DIVIDE       6F      Divide key
VK_F1           70      F1 key
VK_F2           71      F2 key
VK_F3           72      F3 key
VK_F4           73      F4 key
VK_F5           74      F5 key
VK_F6           75      F6 key
VK_F7           76      F7 key
VK_F8           77      F8 key
VK_F9           78      F9 key
VK_F10          79      F10 key
VK_F11          7A      F11 key
VK_F12          7B      F12 key
VK_F13          7C      F13 key
VK_F14          7D      F14 key
VK_F15          7E      F15 key
VK_F16          7F      F16 key
VK_F17          80H     F17 key
VK_F18          81H     F18 key
VK_F19          82H     F19 key
VK_F20          83H     F20 key
VK_F21          84H     F21 key
VK_F22          85H     F22 key
VK_F23          86H     F23 key
VK_F24          87H     F24 key
 ?              88-8F   Unassigned
VK_NUMLOCK      90      NUM LOCK key
VK_SCROLL       91      SCROLL LOCK key
 ?              92-B9   Unassigned
 ?              BA-C0   OEM specific
 ?              C1-DA   Unassigned
 ?              DB-E4   OEM specific
 ?              E5      Unassigned
 ?              E6      OEM specific
 ?              E7-E8   Unassigned
 ?              E9-F5   OEM specific
VK_ATTN         F6      Attn key
VK_CRSEL        F7      CrSel key
VK_EXSEL        F8      ExSel key
VK_EREOF        F9      Erase EOF key
VK_PLAY         FA      Play key
VK_ZOOM         FB      Zoom key
VK_NONAME       FC      Reserved for future use.
VK_PA1          FD      PA1 key
VK_OEM_CLEAR    FE      Clear key

Quote
Jan Doggen wrote:

> Happy newyear (almost/yet?) everyone,

> I'm trying to trap the PgUp and PgDn keys, like:

> procedure TFrmQRPreview.FormKeyUp(Sender: TObject; var Key: Word;
>   Shift: TShiftState);
> begin
>   IF Key = VK_UP THEN
>     BEGIN
>       IF ssCtrl IN Shift THEN GoFirstPage
>                          ELSE GoPrevPage;
>       Key := 0;
>       Exit;
>     END;
>   IF Key = VK_DOWN THEN
>     BEGIN
>       IF ssCtrl IN Shift THEN GoLastPage
>                          ELSE GoNextPage;
>       Key := 0;
>     END;
> end;

> but (!) there are no reference to VK_ constant like VK_PGUP in the
> Windows units (I used the object browser to inspect it).

> I must be missing something obvious here? It should be possible to trap
> those keys!

> Thanks,
> Jan

> -----------------------------------------------------------------------
> Jan Doggen / Masters Software
> mass...@xs4all.nl
> Leiden, The Netherlands
> -----------------------------------------------------------------------

Re:Trapping PgUp/PgDn


 In case it helps anyone else out, two days ago I went through the
experience of seeing that D3 didn't recognize 'if Key = VK_E
then...' in the onKeyDown event. However, it did recognize 'if Key
= $45 then...'. One of those problems where I discovered the
solution, but am still unsure as to what the problem was. FWIW


Brad Blanchard

Re:Trapping PgUp/PgDn


G B Blanchard schrieb:

Quote

>  In case it helps anyone else out, two days ago I went through the
> experience of seeing that D3 didn't recognize 'if Key = VK_E
> then...' in the onKeyDown event. However, it did recognize 'if Key
> = $45 then...'. One of those problems where I discovered the
> solution, but am still unsure as to what the problem was. FWIW

What means 'didn't recognize' here? Didn't compile or didn't match at
runtime? AFAIK in D4 and D5 VK_E is not defined. So VK_A to VK_Z and
VK_0 to VK_9 aren't. One should use ord('E) and so on instead.

-Michael

Re:Trapping PgUp/PgDn


Quote
> >  In case it helps anyone else out, two days ago I went through the
> > experience of seeing that D3 didn't recognize 'if Key = VK_E
> > then...' in the onKeyDown event. However, it did recognize 'if Key
> > = $45 then...'. One of those problems where I discovered the
> > solution, but am still unsure as to what the problem was. FWIW

> What means 'didn't recognize' here? Didn't compile or didn't match at
> runtime? AFAIK in D4 and D5 VK_E is not defined. So VK_A to VK_Z and
> VK_0 to VK_9 aren't. One should use ord('E) and so on instead.

 Compiled fine. Didn't match at runtime. I didn't know the proper way
to explain it. I didn't know that they weren't defined in Delphi.


Brad Blanchard

Other Threads