在当前Tech_YdjcFormForm中,有Dbgrid1,edit1,Tech_YdjcFormForm菜单中有快捷键Del删除Dbgrid1的当前记录,结果导致在edit1中删除某个字符时,执行的总是删除Dbgrid1的当前记录,我在FormKeyDown中写如下事件,根本就不执行,请高手指点,谢谢。
procedure TTech_YdjcForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key= VK_DELETE )  and not Edit1.Focused  then
    Begin
      if Application.MessageBox('确实要删除此条记录吗?','提示',33)=1 then
        Tech_DataMForm.ADODs_Tech_Ydjcb.Delete
       else
        Tech_DataMForm.ADODs_Tech_Ydjcb.Cancel;
    end
end;

解决方案 »

  1.   

    不执行是因为form.keypreview为FALSE!
      

  2.   

    将FormKeyDown事件改在dngrid的ONKeyDown事件中就可以解决.
      

  3.   

    好象我说的是对的,真丢人。设置form.keypreview为true!
      

  4.   

    好象我说的是对的,真丢人。设置form.keypreview为true!
      

  5.   

    to  l_xiaofeng(流水不腐) 我的form.keypreview为true!我在试试 jixinfa(DELHPI程序员) 的
      

  6.   

    由于执行快捷键事件在执行FormKeyDown事件之前,所以
    将原来Del快捷键的代码放到DbGrid的OnKeyDown事件中就行了.
      

  7.   

    删除记录系统有默认的按键 Ctrl + Del,  要那按键干嘛
      

  8.   

    我把删除快捷键设为 Ctrl + Del,根本没反映,可能是什么原因?