What? Detail please!
Does onkeypress work?

解决方案 »

  1.   

    一种办法通过菜单的shotcut属性指定
    另一种方法用API函数RegisterHotKey指定
      

  2.   

    在onkeypress 中代码如何写? 
    可以用FORM响应
      

  3.   

    在onkeydown中
    可以截获,但onkeypress中是不可以截获的 procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      showmessage(inttostr(key));
    end;
      

  4.   

    OnKeyPress不能响应功能键,我再试试别的办法。
      

  5.   

    你可以给窗体加上菜单,设置菜单项的Visible为False,再设置ShortCut 为F1...。
    我试了一下,可以满足你的要求。
      

  6.   

    可以问: ihihonline(小小) 好像可以用OnKeydown来判断key的值是否等于70,也可调用api,
    vk_A  thru  vk_Z  are  the  same  as  their  ASCII  equivalents:  'A'  thru  'Z'  }
      

  7.   

    一般来说,
    应在onkeydown事件中
    判断key in [你所需要的键值] ,
    如:vk_F1..VkF12,vk_Tab等
      

  8.   

    Form的KeyPreview属性必须设置为True,可以在界面上扔一个ActionList组件,组件上可以直接设置快捷键(可以简化截消息的工作),在执行的操作里面写代码调用要执行的功能即可。
      

  9.   

    别人教过我:呐vk_LButton      =  $01; 
    vk_RButton      =  $02; 
    vk_Cancel        =  $03; 
    vk_MButton      =  $04;      {  NOT  contiguous  with  L  &  RBUTTON  } 
    vk_Back            =  $08; 
    vk_Tab              =  $09; 
    vk_Clear          =  $0C; 
    vk_Return        =  $0D; 
    vk_Shift          =  $10; 
    vk_Control      =  $11; 
    vk_Menu            =  $12; 
    vk_Pause          =  $13; 
    vk_Capital      =  $14; 
    vk_Escape        =  $1B; 
    vk_Space          =  $20; 
    vk_Prior          =  $21; 
    vk_Next            =  $22; 
    vk_End              =  $23; 
    vk_Home            =  $24; 
    vk_Left            =  $25; 
    vk_Up                =  $26; 
    vk_Right          =  $27; 
    vk_Down            =  $28; 
    vk_Select        =  $29; 
    vk_Print          =  $2A; 
    vk_Execute      =  $2B; 
    vk_SnapShot    =  $2C; 
    vk_Copy            =  $2C  not  used  by  keyboards  } 
    vk_Insert        =  $2D; 
    vk_Delete        =  $2E; 
    vk_Help            =  $2F; 
    vk_A  thru  vk_Z  are  the  same  as  their  ASCII  equivalents:  'A'  thru  'Z'  } 
    vk_0  thru  vk_9  are  the  same  as  their  ASCII  equivalents:  '0'  thru  '9'  } 
    vk_NumPad0      =  $60; 
    vk_NumPad1      =  $61; 
    vk_NumPad2      =  $62; 
    vk_NumPad3      =  $63; 
    vk_NumPad4      =  $64; 
    vk_NumPad5      =  $65; 
    vk_NumPad6      =  $66; 
    vk_NumPad7      =  $67; 
    vk_NumPad8      =  $68; 
    vk_NumPad9      =  $69; 
    vk_Multiply    =  $6A; 
    vk_Add              =  $6B; 
    vk_Separator  =  $6C; 
    vk_Subtract    =  $6D; 
    vk_Decimal      =  $6E; 
    vk_Divide        =  $6F; 
    vk_F1                =  $70; 
    vk_F2                =  $71; 
    vk_F3                =  $72; 
    vk_F4                =  $73; 
    vk_F5                =  $74; 
    vk_F6                =  $75; 
    vk_F7                =  $76; 
    vk_F8                =  $77; 
    vk_F9                =  $78; 
    vk_F10              =  $79; 
    vk_F11              =  $7A; 
    vk_F12              =  $7B; 
    vk_F13              =  $7C; 
    vk_F14              =  $7D; 
    vk_F15              =  $7E; 
    vk_F16              =  $7F; 
    vk_F17              =  $80; 
    vk_F18              =  $81; 
    vk_F19              =  $82; 
    vk_F20              =  $83; 
    vk_F21              =  $84; 
    vk_F22              =  $85; 
    vk_F23              =  $86; 
    vk_F24              =  $87; 
    vk_NumLock      =  $90; 
    vk_Scroll        =  $91; 这只是单键!还有个组合键的例子:
    procedureTForm1.Edit1KeyDown(Sender:TObject;varKey:Word; 
    Shift:TShiftState); 
    begin 
    Caption:=ShortCutToText(ShortCut(Key,Shift)); 
    caseKeyof 
    VK_SPACE: 
    ifShift=[]then 
    ShowMessage('Space') 
    elseifShift=[ssShift]then 
    ShowMessage('Shift+Space') 
    elseifShift=[ssShift,ssCtrl]then 
    ShowMessage('Shift+Ctrl+Space'); 
    end; 
    end;