双击DBgrid,在弹出的框中选中每个单列,可以设置宽度.

解决方案 »

  1.   

    DBGrid1.Columns[0].Width :=100;
                    DBGrid1.Columns[1].Width :=100;
                    DBGrid1.Columns[2].Width :=100;
                    DBGrid1.Columns[3].Width :=220;
                    DBGrid1.Columns[4].Width :=200;
                    DBGrid1.Columns[5].Width :=100;
                    DBGrid1.Columns[6].Width :=100;
                    DBGrid1.Columns[7].Width :=100;
      

  2.   

    双击数据表QUERY TABLE,每个字段都有一个DisplaySize显示长度
      

  3.   

    不要这样自动,我的做法是:
    让用户自动拖动列宽变化,设法将列宽保存到.ini或注册表中,
    下次运行时,再读出上次保存下来的列宽送到有关控件中,
    让它有记忆功能一样.
      

  4.   

    Canvas.TextWidth() 可以获取文本的宽度(象素)
      

  5.   

    http://kingron.myetang.com.zsfunc0w.htm
    (*//
    标题:数据网格自动适应宽度
    说明:使用DBGrid不可不看
    设计:Zswang
    日期:2002-03-04
    支持:[email protected]
    //*)///////Begin Source
    uses
      Math;function DBGridRecordSize(mColumn: TColumn): Boolean;
    { 返回记录数据网格列显示最大宽度是否成功 }
    begin
      Result := False;
      if not Assigned(mColumn.Field) then Exit;
      mColumn.Field.Tag := Max(mColumn.Field.Tag,
        TDBGrid(mColumn.Grid).Canvas.TextWidth(mColumn.Field.DisplayText));
      Result := True;
    end; { DBGridRecordSize }function DBGridAutoSize(mDBGrid: TDBGrid; mOffset: Integer = 5): Boolean;
    { 返回数据网格自动适应宽度是否成功 }
    var
      I: Integer;
    begin
      Result := False;
      if not Assigned(mDBGrid) then Exit;
      if not Assigned(mDBGrid.DataSource) then Exit;
      if not Assigned(mDBGrid.DataSource.DataSet) then Exit;
      if not mDBGrid.DataSource.DataSet.Active then Exit;
      for I := 0 to mDBGrid.Columns.Count - 1 do begin
        if not mDBGrid.Columns[I].Visible then Continue;
        if Assigned(mDBGrid.Columns[I].Field) then
          mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag,
            mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset
        else mDBGrid.Columns[I].Width :=
          mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption) + mOffset;
        mDBGrid.Refresh;
      end;
      Result := True;
    end; { DBGridAutoSize }
    ///////End Source///////Begin Demo
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      DBGridRecordSize(Column);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      DBGridAutoSize(DBGrid1);
    end;
    ///////End Demo
      

  6.   

    to BCB(天下三分明月夜,二分无赖是扬州):
      //请试试
      DBGrid1.Columns.SaveToFile();
      DBGrid1.Columns.LoadFromFile();
      

  7.   

    以下这段过程是本人自制的TSortDBG的自动调整显示宽度的过程,其中self指本TSortDBG.///////////////////////////////////////////////////////////
    procedure TSortDBG.AdjustShowColumnWidth;
    var
      i, iWidth: Integer;
      aiWidth: array of Integer;
      bm: TBookMark;
    begin
      if not FAutoColumnWidth then Exit;
      SetLength(aiWidth,Columns.Count);
      Screen.Cursor := crHourGlass;
      for i := Low(aiWidth) to High(aiWidth) do
        aiWidth[i] := 0;
      if DataSource<>nil then
        if DataSource.DataSet<>nil then
          if DataSource.DataSet.Active then
          begin
            bm := DataSource.DataSet.GetBook;
            DataSource.DataSet.DisableControls;
            DataSource.DataSet.First;
            while not DataSource.DataSet.Eof do
            begin
              for i := Low(aiWidth) to High(aiWidth) do
              begin
                iWidth := Self.Canvas.TextWidth(Self.Fields[i].DisplayText);
                if iWidth>aiWidth[i] then
                  aiWidth[i] := iWidth;
              end;
              DataSource.DataSet.Next;
            end;
            DataSource.DataSet.GotoBook(bm);
            DataSource.DataSet.EnableControls;
            DataSource.DataSet.FreeBook(bm);
          end;
      for i := Low(aiWidth) to High(aiWidth) do
      begin
        iWidth := Self.Canvas.TextWidth(Self.Columns.Items[i].Title.Caption);
        if iWidth>aiWidth[i] then
          aiWidth[i] := iWidth;
        Columns.Items[i].Width := aiWidth[i]+4;
      end;
      Screen.Cursor := crDefault;
    end;
      

  8.   

    先把你的数据集字段定义成静态。
    再在DBGRID中选择这些字段,分别定义每一个对应字段的显示宽度、标题、等其它显示格式。
    (伴水** 的方法大家可以试试看)
      

  9.   

    DBGrid1.Columns.SaveToFile();
     DBGrid1.Columns.LoadFromFile();(伴水)的方法非常好!!!