能不能一按ESC键就把窗口关掉!帮帮我!(50分)

  • 主题发起人 主题发起人 topboy
  • 开始时间 开始时间
T

topboy

Unregistered / Unconfirmed
GUEST, unregistred user!
能不能一按ESC键就把窗口关掉!要求代码尽量精简,不管焦点在窗口的哪个控件上,都可以!

还有把Enter换成Tab,要最精简的!谢谢!
 
呵!
你把那個以寫好退出的按鈕控件的Cancel設為True不就能夠關了麼
在OnKeyPress中寫道
if Key=#9 then
要做的事情
如果鐘對窗口的所有控件還必需把窗口的KeyPreview設為True
 
如果你有个Button的话,可以把Button的Cancel属性设成True,ModalResult为mrCancel即可。
 
先设置 Form.KeyPreview := True;
写事件:
代码:
Form.OnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_ESCAPE then Close;
end;
 
1)窗口中放一个TButton,将它的Cancel属性设为True;
2)窗口的KeyPreview设为True,并且

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then

if not (ActiveControl is TDBGrid) then begin
Key := #0;
Perform(WM_NEXTDLGCTL, 0, 0);
end;
end;

 
EnterToTab:
代码:
if Key = VK_ENTER then Keybd_Event(VK_TAB, 0, 0, 0);
 
設置窗體的keypreview屬性為True;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
sendmessage(handle,WM_NextDlgCtl,0,0)
else
if key=27 then
sendmessage(handle,wm_close,0,0);
end;
 
老兄们,你们说的只适用于没有焦点的控件,要是焦点在edit中, 就不管用了。。
 
Form 的 KeyPreview = True;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 27 then
Close;
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 13 then
SelectNext(Self.ActiveControl, True, True);
end;
 
》》来自:四库全书, 时间:2002-3-26 13:19:00, ID:1003253
》》老兄们,你们说的只适用于没有焦点的控件,要是焦点在edit中, 就不管用了。。

谁说的??? 如下:
------------------------------
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_ESCAPE then
Close;
end;
---------- [:)][:)][:)][:)]
 
KeyPreview = True;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 13 then
SelectNext(Self.ActiveControl, True, True);
if Key=27 then
Close;
end;
 
同意楼上的!
 
不需要有焦点!
Form 的 KeyPreview = True;
procedure TForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
//按Esc键退出
if Key = Char(Vk_Escape) then
begin
if Application.MessageBox('真的要退出?', '警告',
MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = IDNO then
Exit;
Close;
end;
end;
 
樓上這位仁兄:如果要是在fsMDIForm窗口中呢?還行嗎?
那又將要如何呢?
 
form-->keypreview-->true
onkeypress
if key=vk_escape then
close;
form1.onclose
action:=cafree

 
用keypreview:=true的方法不能解决全部问题!
如果form上有 TWebBrowser 已经显示了某网页,并且拥有焦点,就不行了。
 
同意楼上的,我在win2000 +D6下通过
 
这个问题在这儿干吗呢?
 
添加“关闭”命令按扭,设按扭的Cancel属性为True,代码如下:
procedure TfrmCallId.Button1Click(Sender: TObject);
begin
self.Close;
end;
 
后退
顶部