设form的keypriview为true,在form的onkeydown里写:
...
if (ssShift in shift) then
begin
...
end;
...

解决方案 »

  1.   

    我想写一个只要按下Shift按可以让DBGrid连续多选,请问在那里写才好呢?
      

  2.   

    设置DBGrid的Options.dgMultiSelect属性为True即可。
      

  3.   

    这样只能一条一条的选,不能像windows那样按下shift键可以边选
      

  4.   

    呵呵,就这样(设置form1.keypriview:=true):
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (ssShift in shift) then
      begin
        dbgrid1.Options:=dbgrid1.Options+[dgMultiSelect];
      end;
    end;
      

  5.   

    我不是想要这样的效果,这样直接改字有属性就可以了,我想要的是像WINDOS那样按下SHIFT键可以边选,如:当我选了第一条纪录后,再按下SHIFT键,再在第10条纪录上按一下就可以把第一到第十条纪录都选上
      

  6.   

    我写过,你先仔细观察一下,DBGrid虽然不能象Windows那样,但是只要你按下Shift键后,再按Up或Down键,它就可以实现多选,这就有办法了,先设一个全局变量i,初始为-1,在DBGrid的CellClick事件中,先取DBGrid所对应的DataSet的RecNo,将它赋予一个变量j,再判断Shift是否按下了(用GetKeyState),如果按下了,再用keybd_event来模拟键盘事件,如果j>i则用VK_UP,反则用VK_DWON,注意,keybd_event要成对使用,一个按下事件,一个放开事件,如此重复abs(j-i)次.最后记得还要将j值赋予i
      

  7.   

    prometheusphinx(白日梦)的办法可以
      

  8.   

    用if (ssShift in shift) then来判断啦,
      

  9.   

    prometheusphinx(白日梦) 能否给个例子看看吗?
    [email protected]