我在做一个表时,遇到这种情况,我在数据库中的表的字段名是英文名,所以我在Tdbgrid.columsn里面将每个字段设定成了中文名,而有时不需要显示dbgrid的第一个与第四个字段,我删除时采用的是
Tdbgrid.columsn.delete(0);
Tdbgrid.columsn.delete(2);//因为此时第四个字段已经变为第三个字段,即2。但当我想要恢复时,不知道怎么可以恢复dbgrid.columsn[0],和dbgrid.columsn[2]难道要让我全部清空,然后再逐个添加?这样的法子太笨了啊

解决方案 »

  1.   

    dbgrid1.colums[0].visible:=false;
    dbgrid1.colums[4].visible:=false;
      

  2.   

    放几个Checkbox,分别代表各个列,当Checkbox选中时该列显示procedure TStatQueryForm.CheckColumn(Sender: TObject); //选择字段
    var
     i:integer;
    begin
      for i:=0 to DBGrid1.Columns.Count-1 do //循环查询列
      begin
        if (Sender AS TCheckBox).Caption = DBGrid1.Columns.Items[i].Title.Caption then //如果列名等于CHECKBOX的名
        begin
          DBGrid1.Columns.Items[i].Visible := (Sender As TCheckBox).Checked;
          Break;
        end;
      end;
    end;为每个Chechbox都添加时间
      CheckColumn(Sender);
      

  3.   

    visible := false
    在控一下该没有问题
      

  4.   

    补充
    为每个Chechbox都添加事件
    procedure TStatQueryForm.CheckBox10Click(Sender: TObject);
    begin
      CheckColumn(Sender);
    end;
    注意要把各个CheckBox的Caption属性改为和它对应的列的Tittle属性一致