我的一个数据库表有20个字段,用DBGrid显示的,我的目的是随着鼠标左右拖动,第一个字段的内容始终显示在最左边,如何实现呢,我很困惑,请大家多多帮忙!

解决方案 »

  1.   

    在 grid 的GridDragOver 事件中 判断 列号 是否是1
    是就 exit;
      

  2.   

    real_name(*真名),非常感谢,不过不好意思,我很笨,怎么判断列号为1呀?
      

  3.   

    real_name(*真名),麻烦能给我写的详细一些吗?
      

  4.   

    real_name(*真名),麻烦能给我写的详细一些吗?
      

  5.   

    用 EHLIB 控件包中的 DBGridEH 组件,轻松实现楼主的要求.....
    www.2ccc.com中有下载...
      

  6.   

    smiler007(笑一笑) ,我没有找到你说的那个控件,请帮忙把具体的网址告诉我好吗?还有我的目的是第一列始终显示在最左边,其他列随着鼠标的移动式变化的。
      

  7.   

    控件dxdbgrid双击dxdbgrid
    bands 选项里面添加一个新1-dxlistband
    Columns 设置第一列的bandindex 为0(0-dxlistband)
    其他列为1(1-dxlistband)
    这样就实现你要的功能
      

  8.   

    naner_china(naner),晚上我用qq找你,你再传给我,好吗?
      

  9.   

    naner_china(naner),你发给我的怎么下载不了,所以我的问题仍然没有解决,希望大家再多帮忙!
      

  10.   

    http://www.delphifans.com/SoftView/SoftView_1230.html在这儿下载吧
      

  11.   

    cxgrid 
    删去cxGrid1上的cxGrid1DBTableView1
    新建DB Banded Table以实现,
    在cxGrid1DBBandedTableView里建立Band0,Band1,Band2
    Band0的Fixed=tfLeft
    Band1的Fixed=tfnone
    Band2的Fixed=tfRight
    设置column下要锁定的字段的BandIndex=0/1/2,左固定/不固定/右固定;
     
      

  12.   

    type
      TForm1 = class(TForm)
           procedure FormActivate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    //增加一个声明定义:
    type
     TMyGrid = Class(TDBGrid)
    end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormActivate(Sender: TObject);
    //设置锁定的列数
    begin
      TMyGrid(DbGrid1).FixedCols := 2;
    end;
      

  13.   

    上面说的意思是:在form声明后加一个mygrid 声明,然后在form1 的onactivate方法中锁定左边的列。列数为要锁定数目上加1。
      

  14.   

    bxyqt(碧血银枪),谢谢,我试一下。
      

  15.   

    非常感谢bxyqt(碧血银枪),你的代码是可以实现我的功能,可是当我在DBGrid中拖动鼠标改变列宽度时,这个功能就消失了,而且第一列也不显示字段名,只是空白一格,为什么呢?