AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls TStringGrid, Spaltenbreite so, dass rechts keine Lücke mehr ist
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von hoika · begonnen am 23. Nov 2010 · letzter Beitrag vom 25. Nov 2010
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#1

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

  Alt 23. Nov 2010, 11:10
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

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

  Alt 23. Nov 2010, 11:26
oups, falscher Thread..bitte löschen.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi (23. Nov 2010 um 11:29 Uhr)
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

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

  Alt 23. Nov 2010, 11:30
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.

Stop !

Die Form muss ja auch noch angepasst werden. Sonst hat das Grid eventuell keine Scrollbalken, dafür aber die Form (im FormShow) :

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.
Gruß
Hansa

Geändert von Hansa (23. Nov 2010 um 11:39 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

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

  Alt 23. Nov 2010, 12:34
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
Heiko
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

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

  Alt 23. Nov 2010, 13:23
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 23. Nov 2010, 13:38
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

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

  Alt 23. Nov 2010, 13:55
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 23. Nov 2010, 13:57
Bei mir hat das auch mit Scrollbar funktioniert, probier es einfach mal.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#9

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

  Alt 25. Nov 2010, 08:54
Hallo,

spät aber.

Danke !


Klappt wunderbar.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 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