procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);  if key=VK_Control then
    ...
    ...
 
上面没问题,如果加一个A组合:  if (key=VK_Control)and(key=ord('A')) then
    ...
    ...就不行了,而ALT组合就没问题:
  if (ssALt in Shift)and(key=ord('A')) then
    ...
    ...为什么?

解决方案 »

  1.   

    if (ssCtrl in Shift)and(key=ord('A')) then
      

  2.   

    procedure TBaseDataFrm.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      inherited;
      if Key = 27 then MainForm.SysDataFrame.btnExit.OnClick(Sender)  //ESC
      else
        if Shift = [ssCtrl] then
        Case Key of
          65: MainForm.SysDataFrame.btnNew.OnClick(Sender);    //A
          66: MainForm.SysDataFrame.btnNext.OnClick(Sender);  //B
          68: MainForm.SysDataFrame.btnDelete.OnClick(Sender);  //D
          69: MainForm.SysDataFrame.btnEdit.OnClick(Sender);   //E
          70: MainForm.SysDataFrame.btnLocate.OnClick(Sender);  //F
          71: MainForm.SysDataFrame.btnPriv.OnClick(Sender);  //G
          76: MainForm.SysDataFrame.btnLast.OnClick(Sender);  //L
          80: MainForm.SysDataFrame.btnPrint.OnClick(Sender);   //P
          82: MainForm.SysDataFrame.btnRefresh.OnClick(Sender);  //R
          83: MainForm.SysDataFrame.btnSave.OnClick(Sender);   //S
          84: MainForm.SysDataFrame.btnFirst.OnClick(Self);   //T
          85: MainForm.SysDataFrame.btnUndo.OnClick(Sender);   //U
        end;
    end;
      

  3.   

    少等...为什么key=VK_Control 不行?(key=VK_Control) 和 (ssCtrl in shift)有何区别?
      

  4.   

    if shift=[ssctrl] and key=ord('A') then
    .......
      

  5.   

    if (key=VK_Control)and(key=ord('A')) then
    你想想,key能同时等于两个值么?if (ssCtrl in Shift)and(key=ord('A')) then
    的意思是按下A时判断Ctrl键的状态是否是按下
      

  6.   

    ssCtrl in shift 是
    针对Ctrl组合键处理:
    if ssCtrl in shift then
      if key=ord('A') then
        showmessage('Jello');
      

  7.   

    怎么照着前面的写 没反应?还有什么地方要设的吗?procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if ssCtrl in shift then
      if key=ord('A') then
        showmessage('Jello');
    end;
      

  8.   

    你这样,新键一个工程
    然后
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if ((shift=[ssctrl]) and (key=ord('A'))) if key=ord('A') then
        showmessage('Hello');//'Jello'-->Hello 关键所在!呵呵
    end;不会错的放心吧!