Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

BBoy 18. Apr 2013 09:48

Stringgrid Spaltenbreite an Fenstergröße anpassen
 
Wie kann man verwirklichen damit sich die Spaltenbreite beim Maximieren/Wiederherstellen automatisch anpasst? Selbstverständlich sollte die Spaltenbreite dann realistisch angepasst werden, also nicht das eine Spalte zu groß wird....

Bummi 18. Apr 2013 10:36

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
 
Du könntest StringGrid.Cols[X].Objects als Speicher für einen Prozentwert der Gridbreite verwenden und die Spaltenreiten bei Größenänderung entsprechend berechnen.

sx2008 18. Apr 2013 10:50

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
 
http://www.delphipraxis.net/25365-op...ringgrids.html

Back2Code 18. Apr 2013 14:49

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
 
Ist das auch mit nem DBGrid kompatibel?

sx2008 18. Apr 2013 15:22

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
 
Zitat:

Zitat von Polymorphin (Beitrag 1211946)
Ist das auch mit nem DBGrid kompatibel?

Nein, die gemeinsame Basisklasse von TStringGrid und TDBGrid gibt das leider nicht her.
Ausserdem könnte es beim TDBGrid zu Performanceproblemen kommen, weil man über alle Datensätze gehen müsste um den längsten String in den jeweiligen Spalten zu finden.

Back2Code 18. Apr 2013 15:35

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
 
Zitat:

Zitat von sx2008 (Beitrag 1211950)
Zitat:

Zitat von Polymorphin (Beitrag 1211946)
Ist das auch mit nem DBGrid kompatibel?

Nein, die gemeinsame Basisklasse von TStringGrid und TDBGrid gibt das leider nicht her.
Ausserdem könnte es beim TDBGrid zu Performanceproblemen kommen, weil man über alle Datensätze gehen müsste um den längsten String in den jeweiligen Spalten zu finden.

Gibts hier in der Codelib ne ähnliche Unit nur für's DBGrid? Bin schon seit ner Weile auf der Suche :cyclops:

Bummi 18. Apr 2013 15:49

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
 
Du kannst das ja mal ausprobieren .....

Delphi-Quellcode:
Procedure FitGrid(Grid:TDBGrid);
//bummi 2013 
Const
 C_Add=3;
var
 ds:TDataset;
 bm:TBookmark;
 i:Integer;
 w:Integer;
 a:Array of Integer;
begin
   ds := Grid.DataSource.DataSet;
   if Assigned(ds) then
      begin
        ds.DisableControls;
        bm := ds.GetBookmark;
        try

        ds.First;
        SetLength(a,Grid.Columns.Count);
        ZeroMemory(@a[0],SizeOf(Integer)*Length(a));
        while not ds.Eof do
          begin
            for I := 0 to Grid.Columns.Count - 1 do
                begin
                  if Assigned( Grid.Columns[i].Field) then
                    begin
                     w := Grid.Canvas.TextWidth( ds.FieldByName( Grid.Columns[i].Field.FieldName).DisplayText);
                     if a[i] < w then a[i] := w + C_Add;
                    end;

                end;
            ds.Next;
          end;
        for I := 0 to Grid.Columns.Count - 1 do Grid.Columns[i].Width := a[i];
        ds.GotoBookmark(bm);
        finally
          ds.FreeBookmark(bm);
          ds.EnableControls;
        end;
      end;
end;

procedure TForm1.Button1Click(Sender: TObject);

begin
  FitGrid(DBgrid1)
end;

BBoy 18. Apr 2013 18:26

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
 
Es geht hier nicht darum die Spaltenbreite soweit zu ändern das der gesamte Text darin angezeigt werden kann!

Mein Form ist anfangs klein und das Grid passt perfekt mit den voreingestellten Breiten. Maximiere ich das Form, dann maximiert sich zwar das DBStringGrid weil align auf client steht. Die Spaltenbreite bleibt jedoch gleich und so entsteht rechts eine große Lücke wo nix steht. Und genau dies möchte ich nicht.

DeddyH 18. Apr 2013 19:50

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
 
Was ist ein DBStringGrid?

BBoy 19. Apr 2013 09:09

AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
 
Sorry, ich meine DBGrid.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr.
Seite 1 von 2  1 2      

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