AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TStringGrid fixieren

Ein Thema von Suppenswarls · begonnen am 21. Mär 2013 · letzter Beitrag vom 23. Mär 2013
Antwort Antwort
Seite 1 von 2  1 2   
Suppenswarls

Registriert seit: 21. Mär 2013
5 Beiträge
 
#1

TStringGrid fixieren

  Alt 21. Mär 2013, 19:34
Sers zusammen,

ich habe da mal so eine Frage: Ist es möglich eine TStringGrid in sich selbst zu fixieren? Wenn ja, wie?

Ich meine das so:

Wenn man die Tabelle normal darstellt, sieht das ganze so aus:
http://www7.pic-upload.de/21.03.13/rmj7pnwtjt9p.jpg

Klickt man nun auf die äußerste Spalte, verschiebt sich das ganze ineinander:
http://www7.pic-upload.de/21.03.13/a4x7qlb83nb8.jpg

Das sieht natürlich scheiße aus. Kennt jemand ne Möglichkeit das zu beheben?

Danke im Voraus!



MfG Suppenswarls
Miniaturansicht angehängter Grafiken
1.jpg   2.jpg  

Geändert von Suppenswarls (21. Mär 2013 um 19:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: TStringGrid fixieren

  Alt 21. Mär 2013, 19:37
Herzlich Willkommen in der Delphi-PRAXIS

Die Bilder kannst du hier auch direkt hochladen (was du bitte auch noch machen solltest).

Beim Delphi-Referenz durchsuchenTStringGrid gibt es Delphi-Referenz durchsuchenTStringGrid.FixedRows und Delphi-Referenz durchsuchenTStringGrid.FixedCols

Hilft das?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Suppenswarls

Registriert seit: 21. Mär 2013
5 Beiträge
 
#3

AW: TStringGrid fixieren

  Alt 21. Mär 2013, 19:49
Danke für deine Antwort!
FixedRows & FixedCols sind lediglich dazu da, eine Fixierte Zeile bzw Spalte zu erzeugen, die dann auch farbig gekennzeichnet wird (also eine Zeile wie "Name ; Kategorie ; ..."). Das fixiert die Tabelle aber nicht und hilft mir somit nicht wirklich :S
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: TStringGrid fixieren

  Alt 21. Mär 2013, 19:50
Dann erklär doch bitte mal, wie du dir dieses "fixierte" vorstellst
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Suppenswarls

Registriert seit: 21. Mär 2013
5 Beiträge
 
#5

AW: TStringGrid fixieren

  Alt 21. Mär 2013, 20:20
Die Tabelle soll sich nicht hin und her verschieben, wenn man mit der Maus auf eine außen gelegene Spalte klickt. Bilder sagen mehr als Worte, wirf ein Blick drauf und du wirst mich verstehen.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: TStringGrid fixieren

  Alt 21. Mär 2013, 20:31
Kann es sein, dass du die horizontale Scrollbar ausgeschaltet hast? Er verschiebt die Spalten ja nicht ineinander sonder schiebt die linke Spalte aus dem Grid raus. Ich gehe mal davon aus, dass die letzte Spalte wenige Pixel zu breit ist und deshalb alles nach links "rutscht", damit die Spalte komplett sichtbar ist. Schau dir mal die Eigenschaft ScrollBars des StringGrids an.

Geändert von Aviator (21. Mär 2013 um 20:33 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: TStringGrid fixieren

  Alt 21. Mär 2013, 20:59
Die Tabelle soll sich nicht hin und her verschieben, wenn man mit der Maus auf eine außen gelegene Spalte klickt. Bilder sagen mehr als Worte, wirf ein Blick drauf und du wirst mich verstehen.
Du machst das Stringgrid genau so groß, wie benötigt und stellst beim Programmstart alle Spaltenbreiten so ein, wie du sie brauchst (geht nicht im Objektinspekter). Du kannst dir entweder ausrechnen, wie breit dein Stringgrid sein muß, oder du probierst eine Weile mit den Spaltenbreiten herum, bis es paßt. Das von dir beschriebene Phänomen kommt daher, daß in der von dir gewählten Stringgrid-Breite nicht alle Spalten vollständig sichbar sind, weshalb auch (normalerweise) der horizontale Scrollbalken erscheint, wenn man den nicht zuvor ausschaltet. Das "Springen", wie du es nennst, kannst du nur vermeiden, wenn beim Programmstart alle Spalten vollständig sichtbar sind, wobei du den Platz, den die horizontale Scrollbar beansprucht, nicht vergessen darfst. Um den Anwender eine Änderung Spaltenbreiten zu ermöglichen, stellst du in den im Stringgrid das Property Options.ColSizing auf True, andernfalls auf False (Defaultwert). Laß zur Kontrolle beide Scrollbars zu (ScrollBars := ssBoth. Wenn beim Programmstart, nachdem du alle Spaltenbreiten eingestellt hast, die horizontale Scrollbar verschwunden ist, und sich kein ungenutzter Platz zwischen dem Ende der letzten Spalte und der vertikalen Scrollbar befindet, sind deine Einstellungen abgeschlossen und dein StringGrid ist sozusagen "fixiert".
  Mit Zitat antworten Zitat
Suppenswarls

Registriert seit: 21. Mär 2013
5 Beiträge
 
#8

AW: TStringGrid fixieren

  Alt 21. Mär 2013, 21:12
Also eine pixelgenaue Berechnung der Breiten habe ich bereits gemacht, wobei ich aber die vertikale Scrollbar nicht beachtet habe:

Code:
  gridProdukte.ColCount := 5;
  gridProdukte.RowCount := 2;
  gridProdukte.DefaultColWidth := 100;
  gridProdukte.ColWidths[0] := 180;
  gridProdukte.ColWidths[1] := 150;
  gridProdukte.ColWidths[3] := 60;
Die width-Größe steht auf 590, somit müsste es genau hinkommen. Ich weiß nicht, was Delphi da abzieht, aber sogar ohne jegliche Scrollbars und bei absolut genauer Größe hüpft das Teil zur Seite (siehe Bild). Stelle ich die Breite etwas größer, so verschiebt es sich nicht, jedoch hat man dann einen hässlichen Rand.
Wäre es nicht irgendwie möglich die Breite der letzten Spalte (gridProdukte.ColWidths[4]) automatisch auf die Größe des Rahmens anzupassen, also auch die vertikale Scrollbar zu berücksichtigen?


Edit: Die horizontale Scrollbar ändert nichts an der Tatsache, dass die Spalten so verschoben werden und es sieht auch nicht allzu schön aus, finde ich ^^
Miniaturansicht angehängter Grafiken
1.jpg  
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: TStringGrid fixieren

  Alt 21. Mär 2013, 21:34
Also eine pixelgenaue Berechnung der Breiten habe ich bereits gemacht, wobei ich aber die vertikale Scrollbar nicht beachtet habe:

Delphi-Quellcode:
  gridProdukte.ColCount := 5;
  gridProdukte.RowCount := 2;
  gridProdukte.DefaultColWidth := 100;
  gridProdukte.ColWidths[0] := 180;
  gridProdukte.ColWidths[1] := 150;
  gridProdukte.ColWidths[3] := 60;
Benutze doch bitte statt code zur Anzeige von Delphi-Code das Wort delphi.

Die width-Größe steht auf 590, somit müsste es genau hinkommen.
Von welcher Width-Größe schreibst du hier? gridProdukte.Width oder gridProdukte.ClientWidth? Letzteres ist maßgebend.

Ich weiß nicht, was Delphi da abzieht, aber sogar ohne jegliche Scrollbars und bei absolut genauer Größe hüpft das Teil zur Seite (siehe Bild).
Delphi zieht nicht irgend was ab, sondern du tust das. Delphi macht genau das, was du in den Code reinschreibst. Das, was du nicht reinschreibst, wird auch nicht ausgeführt. Bei mir "hüpft" nichts zur Seite, wenn ich das nicht will.

Stelle ich die Breite etwas größer, so verschiebt es sich nicht, jedoch hat man dann einen hässlichen Rand.
Und hier hast du auch bereits die Lösung: Etwas breiter hinterläßt einen Rand, etwas schmäler reduziert den Rand.

Wäre es nicht irgendwie möglich die Breite der letzten Spalte (gridProdukte.ColWidths[4]) automatisch auf die Größe des Rahmens anzupassen, also auch die vertikale Scrollbar zu berücksichtigen?
Wenn alle Zeilen im StringGrid sichtbar sind, hast du natürlich keine vertikale Scrollbar (vSb) und einen Rand. Du könntest z.B. überprüfen, ab wievielen Zeilen die vSb erscheint und daraufhin eine Spalte um diesen Betrag verringern. Bei mir sind das glaub ich 24 Pixel, mußt du bei dir aber selber mal ausrechnen.

Edit: Die horizontale Scrollbar ändert nichts an der Tatsache, dass die Spalten so verschoben werden und es sieht auch nicht allzu schön aus, finde ich ^^
Das hat auch keiner behauptet!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: TStringGrid fixieren

  Alt 21. Mär 2013, 21:38
Die Tabelle soll sich nicht hin und her verschieben, wenn man mit der Maus auf eine außen gelegene Spalte klickt. Bilder sagen mehr als Worte, wirf ein Blick drauf und du wirst mich verstehen.
Super, ich zeige dir 3 Farben, die es nicht sein sollen und dann kannst du mir sagen, welche Farbe ich haben möchte?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:23 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