请问如何让我的程序响应功能F键 What? Detail please!Does onkeypress work? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一种办法通过菜单的shotcut属性指定另一种方法用API函数RegisterHotKey指定 在onkeypress 中代码如何写? 可以用FORM响应 在onkeydown中可以截获,但onkeypress中是不可以截获的 procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin showmessage(inttostr(key));end; OnKeyPress不能响应功能键,我再试试别的办法。 你可以给窗体加上菜单,设置菜单项的Visible为False,再设置ShortCut 为F1...。我试了一下,可以满足你的要求。 可以问: ihihonline(小小) 好像可以用OnKeydown来判断key的值是否等于70,也可调用api,vk_A thru vk_Z are the same as their ASCII equivalents: 'A' thru 'Z' } 一般来说,应在onkeydown事件中判断key in [你所需要的键值] ,如:vk_F1..VkF12,vk_Tab等 Form的KeyPreview属性必须设置为True,可以在界面上扔一个ActionList组件,组件上可以直接设置快捷键(可以简化截消息的工作),在执行的操作里面写代码调用要执行的功能即可。 别人教过我:呐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; DELPHI6 模拟按下某键或某组合键(应用于DBGridEH) 如何将richedit的内容输出到画布上? 散分,赢了阿泰1000分 一个数据库操作在有的机上出现问题,有没有人遇到过? 关于tdbchart的初级学习 报表中如何统计小计 我想在点击窗体右上角最小化事件中写代码,应该怎么写?请大侠赐教! 如何获得TWebBrowser里打开网页的标题? 我是初学者,请问有关在客户端改变查询条件问题。 一个关于存储过程的问题!! 请问虚拟主机的设置问题? 在线讨论:关于李维的书
另一种方法用API函数RegisterHotKey指定
可以用FORM响应
可以截获,但onkeypress中是不可以截获的 procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
showmessage(inttostr(key));
end;
我试了一下,可以满足你的要求。
vk_A thru vk_Z are the same as their ASCII equivalents: 'A' thru 'Z' }
应在onkeydown事件中
判断key in [你所需要的键值] ,
如:vk_F1..VkF12,vk_Tab等
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;