如何实现在按下Esc键时关闭窗体(30分)

  • 主题发起人 主题发起人 cdl
  • 开始时间 开始时间
C

cdl

Unregistered / Unconfirmed
GUEST, unregistred user!
如何实现在按下Esc键时关闭窗体
 
如果你的form上有一个退出按钮(tbutton或tbitbtn),并且它能完成退出功能,
你可以设置该按钮的cancel为true就行了。
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
begin
if key=vk_escape then
application.terminate;//或者用Close代替;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
keypreview:=true;
end;

end.
 
Form的PreKeypress设成True;
在Form的OnKeyPress中
if key = #27 then
Close;
 
form的keypreviw不知道能不能捕获ESC按键...
 
to kangxy:
不应该有#字符
to cakk:
  能够捕获ESC键,没问题。包括左右WIN键!
 
amo的方法比较好
 
在form的onkeydown事件中加入
if key=vk_escape then
application.terminate;
 
没有 onesc 事件吗?
onkeypress 事件中
写 if key='esc' then

..
不知行不行。在过几天。可在宿舍上网。我就可以一边变成一边上网了。也不用瞎猜了
 
to : sunstone
请看清楚,我写的是在OnKeyPress事件中,key : Char类型,自然要加#
OnKeyDown中Key : Integer,不用加# 可以使用VK_xxx等.
to 阿蒙,OnkeyPress中key:Char类型,不能key='esc',key=#27 (Esc键的ASCII码)
Form的OnKeyPreview要设成True,让你的Form最先处理键盘按键.
 
多人接受答案了。
 
后退
顶部