设置 Form的KeyPreview为Trueprocedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_Delete then showmessage('delete'); end;
不知是不是根据按下DELETE键来处理 在ONKEYDOWN事件中 if key = vk_Delete then begin ... end
UP!procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_Delete then showmessage('delete'); end;
我现在在窗口上还有一个控件,它也有ONKEYDOWN,我运用上述方面,在窗口中的代码procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_Delete then showmessage('delete'); end;它不能运行呢?怎么没有提示delete呢?
在ONKEYDOWN事件中if key = vk_Delete then beginend;
因为form上放了控件之后,就不会获得焦点了 所以没有触发FORM的ONKEYDOWN事件
要设置 Form的KeyPreview为True,
设置 Form的KeyPreview为Trueprocedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_Delete then showmessage('delete'); end;
或者在对象察看器中把这个控件的KeyDown事件指向Form的KeyDown
如何才能在form上放了控件之后,还是能触发FORM的ONKEYDOWN事件呢?
设置 Form的KeyPreview为True
回楼主 你可以用截取消息的方法,来获得delete按键的消息。 这样即使其他的控件也有ONKEYDOWN事情也不会影响, 得到delete按键的消息。 最简单的实现方法可以用TApplicationEvents的onMessage方法,代码如下 procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin if msg.wParam=vk_Delete then showmessage('ook') end;
Shift: TShiftState);
begin
if key=vk_Delete then
showmessage('delete');
end;
在ONKEYDOWN事件中
if key = vk_Delete then
begin
...
end
如果是想屏掉的话,需要Form的KeyPreview为True,别的就看你的需要了!
Shift: TShiftState);
begin
if key=vk_Delete then
showmessage('delete');
end;
Shift: TShiftState);
begin
if key=vk_Delete then
showmessage('delete');
end;它不能运行呢?怎么没有提示delete呢?
beginend;
所以没有触发FORM的ONKEYDOWN事件
Shift: TShiftState);
begin
if key=vk_Delete then
showmessage('delete');
end;
你可以用截取消息的方法,来获得delete按键的消息。
这样即使其他的控件也有ONKEYDOWN事情也不会影响, 得到delete按键的消息。
最简单的实现方法可以用TApplicationEvents的onMessage方法,代码如下
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if msg.wParam=vk_Delete then showmessage('ook')
end;