dbgrid1.Columns[fieldcount-1].Visible:=false; 语句可用dbgrid1.Columns['student_id'].Visible:=false; 不可用那么如何控制dbgridEh中的某列呢?

解决方案 »

  1.   

    Function  TfrmFun.FunSetDBGridEhCell(DbgName:TDBGridEh):Boolean;  // 设置DBGRID列长度
    var
      i,iLen,iPos:integer;
      Fini:Tinifile;
      TitleName:string;
    begin
      Result:=false;
      Fini:=TIniFile.Create(ExtractFilepath(application.ExeName)+'SetWidth.ini');
      Try
      DbgName.Options:=DbgName.Options+[dgEditing];
      for i:=0 to DbgName.Columns.Count-1 do
      begin
        TitleName:=trim(DbgName.Columns.Items[i].Title.Caption);
        iLen:=Length(TitleName); //长度
        iPos:=Pos('日期',TitleName); //位置;
        if iPos>0 then
          TitleName:='日期'
        else
        begin
          iPos:=Pos('单号',TitleName); //位置;
          if iPos>0 then
            TitleName:='单号';
        end;
        DbgName.Columns.Items[i].Width:=Fini.ReadInteger('Col',TitleName,70);
        if DbgName.Columns.Items[i].Width<iLen then
          DbgName.Columns.Items[i].Width:=iLen;
      end;
      Fini.Free;
      Fini:=nil;
      Result:=true;
      Except
      end;
    end;
    你看看!!
      

  2.   

    Columns['student_id']
    ------------------------
    这里是数组,所以只能跟数字了!如果你要控制某一列的不显示
    你可以
    定义个临时变量
    从0--Columns.count-1开始检查
    如果某一列的caption='student_id'
    那么就不显示
      

  3.   

    var
      i :Integer;
    begin
      with DBGridEh1.Columns do
      for i := 0 to Count do
      begin
        if Items[i].Title.Caption = 'student_id' then
        begin
          Items[i].Visible := False;
          Break;
        end;
      end;
    end;
      

  4.   

    if DBGrid1.Columns.Items[i].FieldName = 'student_id' then
        DBGrid1.Columns.Items[i].Visible := False;