Autor Beitrag
kandesbunzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112
Erhaltene Danke: 1


Delphi 7, XE2
BeitragVerfasst: Fr 18.12.20 15:20 
Hallo,

wie kann ich in einem Stringgrid die Spaltenbreite mit der Maus (zur Laufzeit) ändern?

Ich habe verschiedene Settings erfolglos versucht:
- goColSizing = true
- goColMoving = true
- FixedRows = 1
etc.

Was müßte eingestellt werden?

Danke!
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 415
Erhaltene Danke: 102

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Fr 18.12.20 20:14 
das Stringgrid, das standardmäßig auf ein Formular gelegt wird (bei mir mit D6 und 10.4 geprüft) weist dieses Verhalten auf.
Resize erfolgt über die Linien im Header.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
 object StringGrid1: TStringGrid
    Left = 168
    Top = 80
    Width = 545
    Height = 225
    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing]
    TabOrder = 0
  end
kandesbunzler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112
Erhaltene Danke: 1


Delphi 7, XE2
BeitragVerfasst: Sa 19.12.20 11:58 
Danke für die Rückmeldung.

Bei mir funktioniert dies jedoch nur für die erste Zeile (der ersten Zelle = ok), jedoch nicht für die Spalte.

Woran könnte das liegen?

VG!
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 415
Erhaltene Danke: 102

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Sa 19.12.20 21:56 
Jetzt verstehe ich das Problem.

Nein, die Breite einer FixedCol kann vom Anwender nicht geändert werden.
Mir ist kein einfacher Weg bekannt, dies zu ändern.
hRb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 225
Erhaltene Danke: 12



BeitragVerfasst: So 31.01.21 22:41 
Hallo, ist Dein Problem gelöst? (war längere Zeit abwesend, daher erst heute)
Bei mir (Delphi10.1) funktioniert mit den im Anhang gezeigten StringGrid1.Options die Spaltenänderung bestens (nur Spalten). Auch die Breite der Festspalte lässt sich mit der Maus ändern. Siehe Anhang
hRb
Einloggen, um Attachments anzusehen!
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 415
Erhaltene Danke: 102

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: So 31.01.21 22:59 
Ich habe es noch einmal mit XE2 und 10.4 geprüft - die Breite der festen Spalte(n) läßt sich in der erzeugten Anwendung nicht ändern.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4366
Erhaltene Danke: 940

Win10
C#, C++ (VS 2015/17/19)
BeitragVerfasst: Mo 01.02.21 10:04 
In der 10.4 Hilfe zu TGridOptions steht auch klar:
Zitat:
goRowSizing Die Größe von verschiebbare Zeilen kann verändert werden.
goColSizing Die Größe von verschiebbare Spalten kann verändert werden.

Und auch schon in früheren Versionen war dies so, z.B. für 2010 TGridOptions.

Bzw. im englischen (in den Links "de" durch "en" ersetzen) heißt es
Zitat:
goRowSizing Scrollable rows can be individually resized.
goColSizing Scrollable columns can be individually resized.

Also die fixierten (nicht verschiebbaren) Spalten bzw. Zeilen lassen sich nicht in der Größe verändern.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18980
Erhaltene Danke: 1680

W10 x64 (Chrome, Edge)
Delphi 10.4 Ent, Oxygene, C# (VS 2019), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 02.02.21 06:45 
Ein kurzer Blick in den Quelltext zeigt, dass es mehrere Stellen gibt, die dieses Verhalten festlegen. Zum Beispiel gibt es eine Funktion XOutsideHorzFixedBoundary in TCustomGrid.CalcSizingState und die Berechnung in CalcAxisState. Man kann also auch nicht mit einer kleinen Änderung in der Unit das Verhalten ändern, wenn man diese kopiert und dem Projekt hinzufügt.

Warum muss es denn ein TStringGrid sein? Es gibt doch viele schöne Grids wie die TVirtualStringTree, die sich sehr gut anpassen lässt.

Für die horizontale Richtung wären z.B. folgende Änderungen nötig (angepasste Datei links):

2021-02-02

user profile iconhRb hat folgendes geschrieben Zum zitierten Posting springen:
Bei mir (Delphi10.1) funktioniert mit den im Anhang gezeigten StringGrid1.Options die Spaltenänderung bestens (nur Spalten). Auch die Breite der Festspalte lässt sich mit der Maus ändern.
Das kann ich leider nicht reproduzieren und ich sehe auch nicht wie das im Quelltext erklärbar wäre. :nixweiss:
Einloggen, um Attachments anzusehen!
kandesbunzler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112
Erhaltene Danke: 1


Delphi 7, XE2
BeitragVerfasst: Sa 06.02.21 18:26 
Hallo zusammen

und danke nochmals für die Rückmeldungen.

@hRb: Ich habe die Deine Einstellungen testweise übernommen. Leider funktioniert dies auch nicht, so wie mandras auch schon festgestellt hatte.

Woran könnte es noch haken?

VG!