如题,谢谢!

解决方案 »

  1.   

    在DBGrid的OnKeydown事件里判断:  if (ssCtrl in Shift) and (Key=Ord('C')) then
      begin
          //Ctrl与C按下
      end;
      

  2.   

    谢谢回答,但还是不行:procedure TForm_GRIDALL.DBGridEh1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin  if (ssCtrl in Shift) and ((Key=Ord('C') or (Key=Ord('c')) then
      begin
        showmessage(inttostr(key));
      end;总是显示17 。
      

  3.   

    怎么不行呢
      if (ssCtrl in Shift) and (Key=Ord('C')) then
      begin
        showmessage('用户按下Ctrl+C);
      end;
    你只有按Ctrl+C时才会显示"用户按下Ctrl+C",按其它的不行的
    Key是键盘码
      

  4.   

    再试过,确实不行.
    按 Ctrl+C时首先按下的是Ctrl ,它会捕捉到,是单个地捕捉,而不是把Ctrl+C的组合一起捕捉。不知道会不会是DBgrdEh有什么特性在作怪呢?
      

  5.   

    同意hswong.
    if (ssCtrl in Shift) and (Key=Ord('C')) then
      begin
        showmessage('用户按下Ctrl+C);
      end;
    我用dbgrideh能通过。用你的代码测试是67。
      

  6.   

    你按任意一个键都会触发OnKeyDown事件的,所以要进行过滤,
    判断用户是否按下Ctrl+Cif (ssCtrl in Shift) and (Key=Ord('C')) then
    begin
        //当用户按下Ctrl+C 时就会执行到这里
        //相关的处理代码也在这里写
        //处理代码写在外面当然不行了
    end;
      

  7.   

    if (ssCtrl in Shift) and (Key=Ord('C')) then
      begin
        showmessage('用户按下Ctrl+C');
      end;
    楼上的在用户按下Ctrl+C后面少加了个“'”,你加上试试,再不行就没办法了。
      

  8.   

    真正的原因,终于找出来了:如果 DBGridEh1 所在的 TForm.Formstyle=fsMDIChild,那么就捕捉不到 Ctrl+C,其它情形都没有问题。现在的问题是,当 TForm.Formstyle=fsMDIChild 时,如何捕捉用户按下的 Ctrl+C ?
      

  9.   

    或者换种思路:当TForm.Formstyle=fsMDIChild,用户按下 Ctrl+C 时,键值是多少?
    我在DBGridEh1KeyDown中捕捉时,无法抓到组合键的值,而是抓到单个的:先抓到Ctrl,再抓到C。这是问题所在。
      

  10.   

    这根本不是什么FormStyle的问题,按键事件是消息驱动,什么Style都一样。
    也不存在什么Ctrl+C的键值
    好人做到底吧,说说判断用户按下Ctrl+C:当按下C键,即Key=Ord('C')的同时,判断Ctrl键有无按下,即ssCtrl in Shift
    组合起来就是:if (ssCtrl in Shift) and (Key=Ord('C')) then再不明白,或者装不明白我无语.......-_-||
      

  11.   

    HsWong兄弟,谢谢你对这个问题的一直关注。你说的方法我也认为应该是这样的,但是奇怪就在于它的差异性确实就在于TForm.Formstyle=fsMDIChild ,取其它值都ok,这是我反复测试找出来的原因。哪会装什么啊,这不是我的性格哦~~
      

  12.   

    vb中就有个preview属性设置来降低窗体的keydown事件,delphi也应该是这样的,初接触delphi,还不清楚,好奇,上来凑个热闹
      

  13.   

    Delphi中的 TForm 也有个preview属性,但是它的不同设置,对上面的问题现象没有影响,已经试过了。谢谢关注!