一、默认在DBGrid里左右键和上下键的功能是一样的,按了会上下移动记录,现在我想把左右键在DBGrid里屏闭掉,应该怎么做?
二、如何移动DBGrid的垂直滚动条不会移动记录?

解决方案 »

  1.   

    在onKeyPress 事件中屏蔽掉就可....
      

  2.   

    呵呵,在onkeypress里是没法子屏蔽掉的,你只有在dbgrid的实现unit里找到它处理滚动条的事件,然后屏蔽掉该处理函数。或者你为了不影响其他的dbgrid你可以继承dbgrid写一个ocx出来,在新的ocx里你要做的事情就是陈载该滚动条处理函数(在里面你可以处理你想要做的事情)
      

  3.   

    dbgrid的实现unit在哪个目录下?
      

  4.   

    那我具体要改DBGrid的哪个事件?
      

  5.   

    因该是可以在onkeydown里屏蔽掉的。代码只要把输入的键值清除就可以了,
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if (key=mb_right) or (key=mb_left) then key:=nil; 
    end;
    这样应是可以行得通的哦
      

  6.   

    第1个问题,楼上说的很对。
    至于第2个问题:不太好办,DBGrid本来就是把游标停在但前记录上。改起来可能比较麻烦。
    建议你能不能在OnEnter和OnExit中添加事件,记录开始位置,失去焦点之后再自动回复原样。
    要是这样的话,可以用书签很方便的实现。
      

  7.   

    楼上:如果这样的话,会不会比较占系统资源,因为工程里会有很多的这种DBGrid,都用标签跑来跑去的话,困难比较麻烦吧。
      

  8.   

    对第一个问题我可能讲得不太明白,我的意思是想把DBGrid的左右键解放出来响应其他的动作,比如聚焦到其他控件,不是在DBGrid里把左右键屏闭掉,只是不响应记录的移动罢了。
      

  9.   

    请问各位,如何在dbgrid中增加一行空白行以便输入数据呢?
      

  10.   

    那其实也是一样的
    在keydown事件中,
    if (key=mb_right) or (key=mb_left) then 
    {这里填写你要做的动作}