为什么我的 FormKeyPress 对ESC键没有响应?
为什么我的 FormKeyPress 对ESC键没有响应?对SHIFT+ESC才有响应?响应的KEY=\X1B和ESC键一样。
我应该怎样做才可以让FormKeyPress对ESC键响应。求教各位,不胜感谢!
问题点数:50、回复次数:14Top
1 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-06-01 21:32:22 得分 0
void __fastcall TForm1::FormCreate(TObject *Sender)
{
this->KeyPreview=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if(Key=='\x1b')Close();
}Top
2 楼jemyzhang(妙狐)回复于 2005-06-02 00:28:29 得分 0
好像要再FormDown时间里面才有响应Top
3 楼cczlp(不惑)回复于 2005-06-02 07:39:40 得分 0
有的只在KeyPress里,有的只在KeyDown里,楼主可以自己试试Top
4 楼songhtao(三十年孤独)回复于 2005-06-02 09:11:50 得分 0
OnKeyDown看看Top
5 楼woainihaha(笨笨)回复于 2005-06-02 10:01:01 得分 0
1。必须设置KeyPreview为true
2。你对按键的值必须正确
至于你放在那部分都可以,1楼的是正解Top
6 楼Microsnow(冰火)回复于 2005-06-02 11:47:13 得分 20
我之前的经验是:OnKeyPress()里只对某些键(回车等)有响应;
但是在OnKeyDown()里只要设置Form的KeyPreview为true,就可以响应所有按键,前提是Form必须获得焦点.
Top
7 楼wtl526(wtl)回复于 2005-06-02 11:48:10 得分 0
cczlp 说的对,有的只能在KEYPRESS里,有的只能在KEYDOWN里,
换到KEYDOWN试试Top
8 楼scanmaymaymay(yyc)回复于 2005-06-02 12:04:13 得分 0
到底那个说得对,糊涂了
自己试试才知道Top
9 楼general001(我想当一名将军,可惜我还是一个小兵)回复于 2005-06-02 13:05:43 得分 0
谢谢各位,其实我已经象一楼那样做了,但还是没有用,可以对回车键响应,但对ESC键没有响应,还有就是 Microsnow(冰火)兄说的“ Form必须获得焦点”,FORM里的控件获得了焦点可以理解为FORM获得了焦点吗?但此时还是没有作用.
Top
10 楼general001(我想当一名将军,可惜我还是一个小兵)回复于 2005-06-02 13:08:40 得分 0
用OnKeyDown()也没有用。Top
11 楼JiangJason()回复于 2005-06-02 15:39:23 得分 0
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if(Key=='\x1b')
{
ShowMessage((int)Key);
}
}
在我的机上好用!Top
12 楼general001(我想当一名将军,可惜我还是一个小兵)回复于 2005-06-02 17:01:29 得分 0
我的空Form上也可以,但我现在有一个好多控件的Form上就不能用了,我不知道在哪里出了问题,我现在只能用回车键了。我还是希望有知道原因的能帮我一下。Top
13 楼chpst(斗转星移)回复于 2005-06-03 09:43:25 得分 30
Form1->SetFocus();
Form1->KeyPreview=true;Top
14 楼general001(我想当一名将军,可惜我还是一个小兵)回复于 2005-06-03 10:10:05 得分 0
原来还是焦点问题,FORM里的控件获得了焦点不可以理解为FORM获得了焦点。谢谢各位。Top




