![]() |
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....
|
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.
|
AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
|
AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
Ist das auch mit nem DBGrid kompatibel?
|
AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
Zitat:
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. |
AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
Zitat:
|
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; |
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. |
AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
Was ist ein DBStringGrid?
|
AW: Stringgrid Spaltenbreite an Fenstergröße anpassen
Sorry, ich meine DBGrid.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr. |
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