Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Stringgrid Spaltenbreite an Fenstergröße anpassen (https://www.delphipraxis.net/174344-stringgrid-spaltenbreite-fenstergroesse-anpassen.html)

DeddyH 19. Apr 2013 09:37

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
 
Nur so eine Idee: Du merkst Dir je Spalte deren prozentuale Breite relativ zur Clientbreite des Grids. Nach dem Resize errechnest Du dann aus dieser Zahl die neue Breite.

Bummi 19. Apr 2013 10:00

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
 
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;

BBoy 22. Apr 2013 14:47

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
 
Das konnte ich verwenden. Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz