Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi unterschiedliche Spaltenbreite eines StringGrid (https://www.delphipraxis.net/13381-unterschiedliche-spaltenbreite-eines-stringgrid.html)

[TP]Hawk274 17. Dez 2003 11:23


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 02:09 Uhr.

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