Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#12

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen

  Alt 19. Apr 2013, 10:00
Da ich mit meiner ersten Antwort neben den Anforderungen lag, hier die zweite Runde, gegf. kannst Du noch ein wenig feintunen.

Delphi-Quellcode:
Procedure SetDBGridColWidthAuto(Grid: TDBGrid);
var
  i: Integer;
  ws, w: Integer;
  dpl: Integer;
  CArray: Array of Integer;

    Function cWidth(idx: Integer): Integer;
    var
      f: TField;
    begin
      f := Grid.Columns[idx].Field;
      if Assigned(f) then
        Result := f.DisplayWidth
      else
        Result := Grid.Columns[idx].Width;
      CArray[idx] := Result;
    end;

begin
  ws := 0;
  w := Grid.ClientWidth;
  if dgColLines in Grid.Options then
    dpl := 1
  else
    dpl := 0;

  if dgIndicator in Grid.Options then
    w := w - 12;
  SetLength(CArray, Grid.Columns.Count);
  for i := 0 to Grid.Columns.Count - 1 do
    ws := ws + cWidth(i);

  for i := 0 to Grid.Columns.Count - 1 do
  begin
    Grid.Columns[i].Width := Round(w / ws * CArray[i] - dpl);
  end;

end;



procedure TForm3.FormResize(Sender: TObject);
begin
  SetDBGridColWidthAuto(DBGrid1);
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat