![]() |
TStringGrid: Breite einer Spalte anpassen (fit to grid)
Hallo #,
besser konnte ich es nicht ausdrücken. Was ich will. Im Zuge eines Tests for MultiLine-Grids möchte ich eine Spalte in der Breite genau so anpassen, dass das Grid ohne Scrollbar (horizontal) angezeigt wird. Genau diese eine Spalte wäre dann der Kandidat für MultiLine. Der nachfolgende Code funktioniert. aber die Konstante C_AddSpace habe ich jetzt per Trial/Error ausprobiert.
Delphi-Quellcode:
Komme ich an diese 3 irgendwie anderes ran
procedure Grid_FitGridColSize(theGrid: TStringGrid; const theCol: Integer);
const C_AddSpace = 3; var iGridWidth : Integer; iCol : Integer; iSumColWidth : Integer; iDiffColWidth : Integer; begin try iGridWidth:= theGrid.Width; iSumColWidth:= 0; for iCol:= 0 to theGrid.ColCount-1 do begin if iCol<>theCol then begin if theGrid.ColWidths[iCol]>0 then begin iSumColWidth:= iSumColWidth+theGrid.ColWidths[iCol]; { space between the columns } Inc(iSumColWidth, C_AddSpace); end; end; end; iDiffColWidth:= iGridWidth-iSumColWidth; if iDiffColWidth<0 then begin iDiffColWidth:= 10; end; theGrid.ColWidths[theCol]:= iDiffColWidth; except end; end; { Grid_FitGridColSize } über Grid-Funktionen ? Danke Heiko |
Re: TStringGrid: Breite einer Spalte anpassen (fit to grid)
Moin, Moin.
So recht kann ich die Zahl 3 nun nicht nachvollziehen, aber vom Grundsatz gehört zu jeder Spalte die Breite der vertikalen Linie (i.d.R.=1) bei n Spalten müssen wohl die Linien n+1 mal addiert werden. Du setzt die Summe der Spaltenbreite dann in Relation zur GridBreite, da muss auch der gesetzte BorderStyle zu berücksichtigen. Tja, und last but not least natürlich noch die ggf. vorhandene vertikale Scrollbar, die ja auch eine gewissen Breite einnimmt. |
Re: TStringGrid: Breite einer Spalte anpassen (fit to grid)
Hallo,
ich kann die 3 auch nicht nachvollziehen. Bei 2 oder 1 wird ein horizontaler ScrollBar angezeigt. Die 3 könnte natürlich auch Zufall sein, in Abhängigkeit der Anzahl der Spalten. Ich setze die Option mal als experimental ;) Heiko |
Re: TStringGrid: Breite einer Spalte anpassen (fit to grid)
Ok,
aber auf jeden Fall musst du in die Berechnung die Linienbreite, den BorderStyle und die Scrollbar einbeziehen - sonst kann die Prozedur kein allgemeingültiges Ergebnis liefern! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 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