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


Delphi 7, XE2
BeitragVerfasst: Fr 18.12.20 16: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: 429
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Fr 18.12.20 21: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: 116
Erhaltene Danke: 1


Delphi 7, XE2
BeitragVerfasst: Sa 19.12.20 12: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: 429
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Sa 19.12.20 22: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: 267
Erhaltene Danke: 12



BeitragVerfasst: So 31.01.21 23: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: 429
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: So 31.01.21 23: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: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 01.02.21 11: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: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 02.02.21 07: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: 116
Erhaltene Danke: 1


Delphi 7, XE2
BeitragVerfasst: Sa 06.02.21 19: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!
hRb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 267
Erhaltene Danke: 12



BeitragVerfasst: Fr 19.03.21 21:37 
Immer noch ungeklärt?
Deine Frage war
Zitat:
wie kann ich in einem Stringgrid die Spaltenbreite mit der Maus (zur Laufzeit) ändern?

diese Frage bezog sich zunächst nicht auf fix-Zeilen/Spalten. Die sind nicht veränderbar (wurde dargelegt), Aber alle anderen Zeilen/Spalten-Änderungen funktionieren. Siehe beigefügtes Bild (Screenkopie mit Form, Options und gestartetem Programm).
Zitat:
@hRb: Ich habe Deine Einstellungen testweise übernommen. Leider funktioniert dies auch nicht...

Bei mir schon! Vielleicht ein Hinweis zum Bedienen: Zur Änderung der Spaltenbreite MUSS die Maus in der 1. Zeile stehen und zwar genau auf einer senkrechten Linie! Dann ändert sich der Mauszeiger und wird zu einer Art "Doppelstrich" (Spaltenbreitenänderung). Hatte gehofft, dass bei einer Screenkopie dieser veränderte Mauszeiger sichtbar bleibt (leider nicht).
Wird umgekehrt die Höhe einer Zeile verändert, dann MUSS der Mauszeiger in Spalte 1 (fix) stehen und zwar genau auf der waagrechten Linie. Dann wird Mauszeiger zu einem waagerechten Doppelstrich (will kein Oberlehrer sein, aber an dieser Stelle hing ich selbst mal)
Habe gerade dies nochmal getestet, indem ich ein TStringGrid auf eine Form legte. Ich gehe davon aus, dass Dir die Option bekannt sind: in der Hilfe unter VLC-Bibliothek, Reiter Suchen/ Suchtext= 'Vcl.Grids.TGridOption'.
Gruß und viel Erfolg
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 19.03.21 22:12 
user profile iconhRb hat folgendes geschrieben Zum zitierten Posting springen:
Die sind nicht veränderbar (wurde dargelegt)
Ich habe ja gezeigt, dass man das mit wenig Aufwand ändern kann.

Aber eine andere Gridkomponente wäre sinnvoller.
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 20.03.21 22:48 
user profile iconhRb hat folgendes geschrieben Zum zitierten Posting springen:
Hatte gehofft, dass bei einer Screenkopie dieser veränderte Mauszeiger sichtbar bleibt (leider nicht).
Habe dazu etwas gefunden. Da hast du den Mauzeiger mit drauf!
...den Mauszeiger in einem Screenshot anzeigen?

Moderiert von user profile iconTh69: URL-Titel hinzugefügt.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!