![]() |
TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
Hallo #,
Beschreibung ist schwierig. Ich habe ein Grid (alClient). Das Grid soll keinen horizontalen Scrollbar haben. Eine Spalte soll immer so breit sein, dass rechts kein Rand ist. Das ganze unter Berücksichtigung, dass es auch einen vertikalen Scrollbar geben kann. Hat jemand sowas schon programmiert ? Danke Heiko |
AW: TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
oups, falscher Thread..bitte löschen.
|
AW: TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
Zitat:
Delphi-Quellcode:
Bei mir liegt das Grid auf einem Panel. Im Prinzip aber wohl egal. :mrgreen:
procedure Tfrm.ErmittleGridBreite;
var i : integer; begin PanelBreite := 0; for i := 0 to sg.ColCount - 1 do PanelBreite := PanelBreite + sg.ColWidths [i] + 1; PanelBreite := PanelBreite + GetSystemMetrics (SM_CYVSCROLL) + 10; end; // ^ Reserve für Scrollbalken Stop ! Die Form muss ja auch noch angepasst werden. Sonst hat das Grid eventuell keine Scrollbalken, dafür aber die Form (im FormShow) :
Delphi-Quellcode:
Im Klartext sieht das dann so aus : anhand der nötigen Grid-Breite, die Panelbreiite ermitteln. Anhand des ermittelten Wertes wird dann die Breite der Form an die Panelbreite angepasst. Lästig sind allerdings noch die Ränder, die überall auftauchen. Deshalb das +4, +10 usw.
width := PanelBreite + 4; // wegen Panel-Rand
|
AW: TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
Hallo,
habe mich wohl doch falsch ausgedrückt oder der Hansa kann nicht lesen ;) Also: - Grid-Breite ist fix (Form+Grid darf nicht verändert werden). - Grid-Spaltenbreiten (bis auf eine Spalte) wird gesetzt Jetzt soll die Spaltenbreite dieser einen (vergessenen) Spalte so gesetzt werden, das rechts (im Grid) keine Lücke mehr angezeigt wird. Heiko |
AW: TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
Das ist ja noch einfacher. Es geht nur um eine Spalte ? Das wäre dann eben : gesamte verfügbare Breite-Breite Stringgrid ohne die eine Spalte. Und dann ColWith der betreffenden Spalte einfach auf den ermittelten Wert setzen.
|
AW: TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
Ungefähr so?
Delphi-Quellcode:
function LastColWidth(Grid: TStringGrid): integer;
var i: integer; aWidth: integer; begin aWidth := 0; for i := 0 to Grid.ColCount - 2 do inc(aWidth, Grid.ColWidths[i] + Grid.GridLineWidth); Result := Grid.ClientWidth - aWidth - Grid.GridLineWidth; end; procedure TForm1.FormCreate(Sender: TObject); begin StringGrid1.ColWidths[StringGrid1.ColCount-1] := LastColWidth(StringGrid1); end; |
AW: TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
Hallo,
Hansa das GridLineWidth hat mir gefehlt. DeddyH und was ist mit vertikalem Scollbar ? Tritzdem danke. Mit allen Threads hier bekomme ich sicher eine Lösung zusammen ;) Heiko |
AW: TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
Bei mir hat das auch mit Scrollbar funktioniert, probier es einfach mal.
|
AW: TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
Hallo,
spät aber. Danke ! Klappt wunderbar. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 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