是一个老项目的维护,不能换控件,用TStringGrid(DBGrid).fixedcols:=2也不行的,有没有哪位大侠搞过,是锁定第二列,分不多,全给了,急。。

解决方案 »

  1.   

    我用TStringGrid(DBGrid)转换后发现colcount = 0,DBGrid.colcount<>0的
      

  2.   

    DBGrid不支持,你可以再放一个dbgrid,就两列,覆盖在那个grid上
      

  3.   

    换成Tstringgrid这样的标准控件,应该没有问题吧
      

  4.   

    有点问题,你看着办。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, Grids, DBGrids;type
      TDBGrid = class(DBGrids.TDBGrid)
      end;  TForm1 = class(TForm)
        DBGrid1: TDBGrid;
        ADOTable1: TADOTable;
        DataSource1: TDataSource;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      DBGrid1.FixedCols := 2;
    end;end.
      

  5.   

    要是DBGrid不太好锁定的话,dxDBGrid能不能比较简单的锁定呢
      

  6.   

    添加band,然后可以设置其锁定,把要锁定的列都放到这个band下
      

  7.   

    楼主的意思是不是内容太长,dbgrid显示不下,要把前面的某一列或是几列固定不动,如果是这样,可以试下下面的方法:
    在你以前的dbgrid区域放一个panel组件,align属性alclient
    在放一个dbgrid组件,align属性alleft,
    在放一个splitter组件,aling属性alleft,
    在放一个dbgrid组件,align属性alclient。然后把二个dbgrid组件连到数据源。这样就好了
      

  8.   

    搞定了 把DBGrid换成dxDBGrid 然后
        建立Band0,Band1
        Band0的Fixed=tfLeft
        Band1的Fixed=tfnone
        设置要锁定的字段的BandIndex=0,其它为1