我想当检测到ctrl+回车时执行代码,怎么实现
还有请大侠列出常用的组合键应该怎么判断

解决方案 »

  1.   

    首先判断Ctrl是否被按下
    function CtrlDown: Boolean; 
    var 
     State: TKeyboardState; 
    begin 
     GetKeyboardState(State); 
     Result := ((State[VK_CONTROL] and 128) <> 0); 
    end; 
    可以自定义这个函数,实际上是系统判断键盘状态,可以用个timer控件检测Ctrl键的状态,然后再在KeyPress事件中判断是否在Ctrl键被按下的同时按下了Enter键就可以了!
      

  2.   

    其他的组合键都和上面判断Ctrl键的函数类似,只是把对应的键改一下就可以了
      

  3.   

    1,将Form1的KeyPreview属性设置为True,
    2,在Form1的OnKeyDown事件中写代码:
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if key=VK_RETURN then
    if ([ssctrl]=shift) then
    messagebox(handle,pchar('你按下了Ctrl+Enter组合键!'),pchar(''),mb_ok);
    end;
      

  4.   

    [DELPHI]关于键盘常量名
    VK_BACK/VK_TAB/VK_RETURN/VK_SHIFT/VK_CONTROL/VK_MENU/VK_PAUSE/VK_ESCAPE
    /VK_SPACE/VK_LEFT/VK_RIGHT/VK_UP/VK_DOWN
    F1--F12:$70(112)--$7B(123)
    A-Z:$41(65)--$5A(90)
    0-9:$30(48)--$39(57)
    在可以接受键盘输入的过程里面,有个SHIFT参数,这个参数就是用来检查是否按下控制键的
    常用的控制键有3个,他们的参数是[ssALT][ssSHIFT][ssCTRL]
    判断CTRL+回车,你可以用下列语句
    if (SHIFT=[ssCTRL]) and (Ord(Key)=VK_RETURN) then
      ...;
    或者
    if (SHIFT=[ssCTRL]) and (Key=13) then
      ...;
      

  5.   

    -------------------
    1,将Form1的KeyPreview属性设置为True,
    2,在Form1的OnKeyDown事件中写代码:
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if key=VK_RETURN then
    if ([ssctrl]=shift) then
    messagebox(handle,pchar('你按下了Ctrl+Enter组合键!'),pchar(''),mb_ok);
    end;