![]() |
unterschiedliche Spaltenbreite eines StringGrid
Ich möchte die Breite aller Spalten eines StringGrids anpassen, wodurch kein bzw. nur ein kleiner Streifen auf der rechten Seite des StringGrids zu sehen ist.
Ich habe mir jetzt folgende procedure geschrieben die beschriebenes tut. Allerdings habe ich nun einen horizentale Scrollbar. Das wollte ich nun wieder auch nicht. Irgendwie steckt noch der Wurm in der procedure. Wahrscheinlich muss ich auch noch den Rahmen der Zellen und die Breite der Linien, die die Zellen des Gitters trennen. Hatte aber bereits verssucht GridLineWidth abzuziehen. Allerdings hatte ich dann wieder ein kleinen weißen Rand von ca. 10 bis 15px.
Code:
procedure TfrmMain.FormCreate(Sender: TObject);
begin ... iMinColWidth := 50; ... end. ... procedure TfrmMain.SetGridColumnWidths(Grid: TStringGrid); var iCol, iRow: integer; iMaxLen, iSize: integer; iColLen: integer; begin with Grid do begin iColLen := 0; for iCol := 0 to Pred(ColCount) do begin iMaxLen := iMinColWidth; for iRow := 0 to Pred(RowCount) do begin if Canvas.TextWidth(Cells[ iCol, iRow ]) > iMaxLen then iMaxLen := Canvas.TextWidth(Cells[ iCol, iRow ]); end; ColWidths[ iCol ] := iMaxLen; iColLen := iColLen + ColWidths[ iCol ] end; if (Grid.Width - iColLen) > 0 then begin iSize := ((Grid.Width - iColLen) div ColCount); // iSize := ((Grid.Width - iColLen) div ColCount) - (GridLineWidth*ColCount); for iCol := 0 to Pred(ColCount) do begin ColWidths[ iCol ] := (ColWidths[ iCol ] + iSize); end; end; end; end; { SetGridColumnWidths } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 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