请问如何在一个FORM里设置ctrl+方向键的快捷键,要求不处理消息。试成功就给分。

解决方案 »

  1.   

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if (ssCtrl in Shift) and (Key in [37]) then ShowMessage('Ctrl-左');
    if (ssCtrl in Shift) and (Key in [38]) then ShowMessage('Ctrl-上');
    if (ssCtrl in Shift) and (Key in [39]) then ShowMessage('Ctrl-右');
    if (ssCtrl in Shift) and (Key in [40]) then ShowMessage('ctrl-下');
    end;
      

  2.   

    不需要用到消息
    设置from的属性 keypreview为true
    在from的onkeydown事件中或onkeyup中
    if (shift=[ssCtrl])then
    begin
      case key of
      vk_left:
      begin
        showmessage('左方向键');
      end;
      vk_right:
      begin
        showmessage('右方向键');
      end;
      //......
      end;
    end;
      

  3.   

    网上的一稿网文..
       但我自己没调试过....
    设置全局快捷键    ////////////////////////////////////
    type 
    TForm1 = class(TForm) 
    procedure FormCreate(Sender: TObject); 
    procedure FormDestroy(Sender: TObject); 
    protected 
    procedure hotykey(var msg:TMessage); message WM_HOTKEY; 
    end; var 
    Form1: TForm1; 
    id,id2:Integer; implementation {$R *.DFM} 
    procedure TForm1.hotykey(var msg:TMessage); 
    begin 
    if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=81) then 
    begin 
    ShowMessage('Ctrl + Q '); 
    end; if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=82) then 
    begin 
    ShowMessage('Ctrl + R '); 
    end; 
    end; 
    procedure TForm1.FormCreate(Sender: TObject); 
    begin 
    id:=GlobalAddAtom('hotkey'); 
    RegisterHotKey(handle,id,mod_control,81); id2:=GlobalAddAtom('hotkey2'); 
    RegisterHotKey(handle,id2,mod_control,82); 
    end; procedure TForm1.FormDestroy(Sender: TObject); 
    begin 
    UnRegisterHotKey(handle,id); 
    UnRegisterHotKey(handle,id2); 
    end;
      

  4.   

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if (ssCtrl in Shift) and (Key in [37]) then ShowMessage('Ctrl-左');
    if (ssCtrl in Shift) and (Key in [38]) then ShowMessage('Ctrl-上');
    if (ssCtrl in Shift) and (Key in [39]) then ShowMessage('Ctrl-右');
    if (ssCtrl in Shift) and (Key in [40]) then ShowMessage('ctrl-下');
    end;
      

  5.   

    一、二楼的简单易懂,可以了吧。
     hottey(蓝色的幽灵) 的有点新意,试一下