pascal 中如何判断按下了pageUp、pageDown以及上下左右键,指在turbo pascal下;先谢谢各位了!

解决方案 »

  1.   

    在KEYDOWN或KEYUP事件中:
    CASE KEY OF
    VK_PRIOR:TABLE1.PRIOR;(PAGEUP)
    VK_NEXT:TABLE1.NEXT;(PAGEDOWN)
      

  2.   

    Delphi 键盘码表 
     
    资料来源:Delphi Windows 单元文件 表格整理:http://www.netgocn.com 
     
    VK_LBUTTON = 1;
    VK_RBUTTON = 2;
    VK_CANCEL = 3;
    VK_MBUTTON = 4; { NOT contiguous with L & RBUTTON }
    VK_BACK = 8;
    VK_TAB = 9;
    VK_CLEAR = 12;
    VK_RETURN = 13;
    VK_SHIFT = $10;
    VK_CONTROL = 17;
    VK_MENU = 18;
    VK_PAUSE = 19;
    VK_CAPITAL = 20;
    VK_KANA = 21;
    VK_HANGUL = 21;
    VK_JUNJA = 23;
    VK_FINAL = 24;
    VK_HANJA = 25;
    VK_KANJI = 25;
    VK_CONVERT = 28;
    VK_NONCONVERT = 29;
    VK_ACCEPT = 30;
    VK_MODECHANGE = 31;
    VK_ESCAPE = 27;
    VK_SPACE = $20;
    VK_PRIOR = 33;
    VK_NEXT = 34;
    VK_END = 35;
    VK_HOME = 36;
    VK_LEFT = 37;
    VK_UP = 38;
    VK_RIGHT = 39;
    VK_DOWN = 40;
    VK_SELECT = 41;
    VK_PRINT = 42;
    VK_EXECUTE = 43;
    VK_SNAPSHOT = 44;
    VK_INSERT = 45;
    VK_DELETE = 46;
    VK_HELP = 47;
    { VK_0 thru VK_9 are the same as ASCII '0' thru '9' ($30 - $39) }
    { VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' ($41 - $5A) }
    VK_LWIN = 91;
    VK_RWIN = 92;
    VK_APPS = 93;
    VK_NUMPAD0 = 96;
    VK_NUMPAD1 = 97;
    VK_NUMPAD2 = 98;
    VK_NUMPAD3 = 99;
    VK_NUMPAD4 = 100;
    VK_NUMPAD5 = 101;
    VK_NUMPAD6 = 102;
    VK_NUMPAD7 = 103;
    VK_NUMPAD8 = 104; VK_NUMPAD9 = 105;
    VK_MULTIPLY = 106;
    VK_ADD = 107;
    VK_SEPARATOR = 108;
    VK_SUBTRACT = 109;
    VK_DECIMAL = 110;
    VK_DIVIDE = 111;
    VK_F1 = 112;
    VK_F2 = 113;
    VK_F3 = 114;
    VK_F4 = 115;
    VK_F5 = 116;
    VK_F6 = 117;
    VK_F7 = 118;
    VK_F8 = 119;
    VK_F9 = 120;
    VK_F10 = 121;
    VK_F11 = 122;
    VK_F12 = 123;
    VK_F13 = 124;
    VK_F14 = 125;
    VK_F15 = 126;
    VK_F16 = 127;
    VK_F17 = 128;
    VK_F18 = 129;
    VK_F19 = 130;
    VK_F20 = 131;
    VK_F21 = 132;
    VK_F22 = 133;
    VK_F23 = 134;
    VK_F24 = 135;
    VK_NUMLOCK = 144;
    VK_SCROLL = 145;
    { VK_L & VK_R - left and right Alt, Ctrl and Shift virtual keys.
    Used only as parameters to GetAsyncKeyState() and GetKeyState().
    No other API or message will distinguish left and right keys in this way. }
    VK_LSHIFT = 160;
    VK_RSHIFT = 161;
    VK_LCONTROL = 162;
    VK_RCONTROL = 163;
    VK_LMENU = 164;
    VK_RMENU = 165;
    VK_PROCESSKEY = 229;
    VK_ATTN = 246;
    VK_CRSEL = 247;
    VK_EXSEL = 248;
    VK_EREOF = 249;
    VK_PLAY = 250;
    VK_ZOOM = 251;
    VK_NONAME = 252;
    VK_PA1 = 253;
    VK_OEM_CLEAR = 254 
      

  3.   

    Key := BiosKey(0);
             PGUP = $4900,
    PGDN = $5100,
    CUR_R = $4d00,
    CUR_L = $4b00,
    CUR_U = $4800,
    CUR_D = $5000;
      

  4.   

    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      CASE KEY OF
        VK_PRIOR:EDIT1.Text:='前';
        VK_NEXT:EDIT1.Text:='后';
        vk_DOWN:EDIT1.Text:='下';
        vk_Up:EDIT1.Text:='上';
        VK_LEFT:EDIT1.Text:='左';
        VK_Right:EDIT1.Text:='右';
      END;
    end;
      

  5.   

    上面各位大哥的不错,可小弟的程序是在Dos 下用turbo pascal 写的;上面的函数都不能用啊!请指教在Dos下怎么做?
      

  6.   

    bioskey 是那个文件的函数,小弟没用过,请指教!!!thanks!
      

  7.   

    不知道你的版本,你可这样写:if ReadKey = chr(0) then
      case Ord(ReadKey) of
        $49: ...//page up
        $51:    //page down
        $4d:    //right
        $4b:    //left
        $48:    //up
        $50:    //down
      end;
      

  8.   

    谢了!我用的是7.0。
    另外再问一下:有一个Ramkey(key)还有个inkey(key);是那个版本的?我在读一个十年前的古董,这几个地方不知道怎么改!要补充单元文件吗?
      

  9.   

    Ramkey(key)没听说过,是否就是ReadKey?
    inkey(key)判断是否有键按下,有返回1(或True),记不清了。
    如果有,应该在BOIS单元。
      

  10.   

    更正:
    如果有,应该在BIOS单元。
      

  11.   

    不好意思昨天掉线了,我的机器上没有BIOS单元,怎么办?哪里能下一个吗?
      

  12.   

    ok,上面的问题算搞定了,to: maozefa(之源) F1--F10如何判断?非常感谢,您是怎么知道的,可以测吗?请指教!!!该问题在加100分
      

  13.   

    判断同上: F1 = $3b,
    F2 = $3c,
    F3 = $3d,
    F4 = $3e,
    F5 = $3f,
    F6 = $40,
    F7 = $41,
    F8 = $42,
    F9 = $43,
    F10 = $44,
    INS = $52,
    DEL = $53,
    HOME = $47,
    END = $4f
      

  14.   

    我想知道兄台是如何知道这些($4f.....)的?
    另开一贴标题:我想知道兄台是如何知道这些($4f.....)的?分数100;
    maozefa(之源)兄台来领分吧!!!
      

  15.   

    在这里:
    http://expert.csdn.net/Expert/topic/1295/1295664.xml?temp=.8464624