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/)
-   -   TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist (https://www.delphipraxis.net/156186-tstringgrid-spaltenbreite-so-dass-rechts-keine-luecke-mehr-ist.html)

hoika 23. Nov 2010 10:10

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

Bummi 23. Nov 2010 10:26

AW: TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
 
oups, falscher Thread..bitte löschen.

Hansa 23. Nov 2010 10:30

AW: TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
 
Zitat:

Zitat von hoika (Beitrag 1063473)
Hat jemand sowas schon programmiert ?

Jo. Zumindest so in der Richtung :

Delphi-Quellcode:
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
Bei mir liegt das Grid auf einem Panel. Im Prinzip aber wohl egal. :mrgreen:

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:
width := PanelBreite + 4; // wegen Panel-Rand
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.

hoika 23. Nov 2010 11:34

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

Hansa 23. Nov 2010 12:23

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.

DeddyH 23. Nov 2010 12:38

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;

hoika 23. Nov 2010 12:55

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

DeddyH 23. Nov 2010 12:57

AW: TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
 
Bei mir hat das auch mit Scrollbar funktioniert, probier es einfach mal.

hoika 25. Nov 2010 07:54

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:11 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