想用复选框来控制dbgrid中显示的列,该在哪个事件中怎样设置呢?
还有,dbgrid中的列宽是根据数据库的字段宽度来调整的,我想自己控制宽度该怎么办呢?

解决方案 »

  1.   


    {问题一:}
    {每一个复选框对应一列,在每个复选框onClick中写代码,如:}procedure TForm1.CheckBox1Click(Sender: TObject);
    begin
    dbgrid1.Columns[0].Visible:=not CheckBox1.Checked;
    end;procedure TForm1.CheckBox2Click(Sender: TObject);
    begin
    dbgrid1.Columns[1].Visible:=not CheckBox2.Checked;
    end;{....}{问题二:}
    dbgrid1.Columns[1].Width:=200; {自己指定宽度}
      

  2.   

    补充
    CheckBox初始值为false,即未打勾选中.
      

  3.   

      function FindColumn(DBGrid: TDBGrid; FieldName: string): TColumn;
      var
        i: Integer;
      begin
        for i := 0 to DBGrid.Columns.Count - 1 do
        begin
          Result := DBGrid.Columns[i];
          if SameText(Result.FieldName, FieldName) then
            Exit;
        end;
        Result := nil;
      end;var
      AColumn: TColumn;
    begin
      AColumn := FindColumn(DBGrid1, '你要设置的字段');//先找你要设置字段对应的DBgrid列
      if AColumn <> nil then
      begin
        AColumn.Width := 100;
        AColumn.Visible := CheckBox.Checked;
      end;