如果一个dbgrid有很多的列,我在拖动横向的滚动条时,如何实现第一列锁定的效果?很急,大侠指点!

解决方案 »

  1.   

    禁止移动DBGrid的列?TStringGrid(DBGrid1).Options:= TStringGrid(DBGrid1).Options-[goColMoving];
     
      

  2.   

    不是这个意思,是让某一列或者某几列不会因为拖动横向的滚动条时,跑到里面去了.
    就想是excel中能够锁定列一样。
      

  3.   

    上面错了

    type 
      form1=Class(Tform)...
    之前加
    type
      TDrawGrid=Class(TCustomGrid)
    end;
    然后再dbgrid的oncolexit中加:
    TDrawGrid(dbgrid1).col:=1;
      

  4.   

    如何锁定Delphi的DBGRID的列    我在使用Delphi 3进行数据库编程的时候,希望DBGRID构件在显示数据的时候能象FoxPro的BROWSE命令一样,锁定左边指定的几列不进行滚动,请问应用什么方法来实现?    我们知道Delphi的TStringGrid有一个属性FixedCols来指定不滚动的列。虽然TDBGrid不能直接使用这一属性,但通过强制类型转换也可以首先这一功能,因为这两个类都来自TCustomGrid类。下面我们以Delphi 3.0的Demos\Db\CtrlGrid为例来说明具体的用法。在这个例子的TFmCtrlGrid.FormShow过程中加入如下一行:
        TStringGrid(DbGrid1).FixedCols := 2; 
        运行该程序,就可以得到图1所示的效果,在左右移动各列时Symbol列不会移动。除了这种方法,也可以采用下面的方法:首先在Form声明部分加上
    type TMyGrid = Class(TDBGrid) end; 
        然后在TFmCtrlGrid.FormShow过程中加入:
    TMyGrid(DbGrid1).FixedCols := 2; 
        两者从形式上略有不同,但实质都是一样的。我们这里设置FixedCols为2,这是因为在DBGrid构件最左侧有个指示列,如果你将DBGrid的Options属性的dgIndicator设为False,则应设置FixedCols为1。