我将DBGrid的OnKeyDown事件委托给另外一个函数,为什么没有作用?
  AccountDBGrid.OnKeyDown:=_OnKeyDown;其中:
procedure TAccount._OnKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key=VK_INSERT) then
  begin
    InsertBtnClick(Sender);
  end;  if (Key=VK_ESCAPE) then
    ExitBtnClick(Sender);  if (Key=VK_F1) then
  begin
    Application.CreateForm(THelp, Help);
    Help.Mem.Text:=mHelpStr;
    Help.ShowModal;
    FreeAndNil(Help);
  end;
end;

解决方案 »

  1.   

    谁说的?
      if (Key=VK_INSERT) then
      begin
        InsertBtnClick(Sender);
    Exit;
      end;  if (Key=VK_ESCAPE) then
    begin
        ExitBtnClick(Sender);
    Exit;
    end;试试刊  if (Key=VK_F1) then
      begin
        Application.CreateForm(THelp, Help);
        Help.Mem.Text:=mHelpStr;
        Help.ShowModal;
        FreeAndNil(Help);
      end;
      

  2.   

    楼主,DBGrid的OnKeyDown属性设置为True吗?
      

  3.   

    Sorry, 这段代码本身没有错。没有响应是因为我把AccountDBGrid.OnKeyDown:=_OnKeyDown;写在SetAccelerator()函数中,而在FormCreate()时忘记调用SetAccelerator()。谢谢各位!