我想在delphi中把dbgrid网格的列宽按百分比分配单元格宽度,这样把做好的表格最大化时,网格也跟着按比例全屏显示,请问这个功能可以实现没??

解决方案 »

  1.   

    可以的:  function DBGridAutoSize(mDBGrid: TDBGrid; mOffset: Integer = 10): Boolean;function DBGridAutoSize(mDBGrid: TDBGrid; mOffset: Integer = 10): 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 }