AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid ColWidth

Ein Thema von juelin · begonnen am 1. Dez 2015 · letzter Beitrag vom 1. Dez 2015
Antwort Antwort
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#1

AW: Stringgrid ColWidth

  Alt 1. Dez 2015, 14:26
Der Befehl: StringGrid1.ColWidths[2]:=10000; geht zwar
aber es werden nur 152 Zeichen des Textes angezeigt.
Der Text ist 512 Zeichen lang.
Jürgen Linder
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.603 Beiträge
 
Delphi 12 Athens
 
#2

AW: Stringgrid ColWidth

  Alt 1. Dez 2015, 14:50
Der Befehl: StringGrid1.ColWidths[2]:=10000; geht zwar
aber es werden nur 152 Zeichen des Textes angezeigt.
Der Text ist 512 Zeichen lang.
Auch das funktioniert unter Seattle wie erwartet - mal abgesehen davon, daß man das Form schon über zwei Bildschirme ziehen muss, damit es das anzeigen kann.

Vielleicht ein Hinweis: Horizontales Scrolling im Grid scrollt die Spalten aber nicht den Spalteninhalt. Wenn die Spalte also nicht komplett darstellbar ist, dann nutzt scrollen auch nichts.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Stringgrid ColWidth

  Alt 1. Dez 2015, 15:01
Formular Width ist 1024
StringGrid Width ist 1008
Wenn ich Formular und StringGrid breiter mache ist der Text komplett.
Will ich aber nicht.
Warum kann man nicht weiter scrollen?

HolgerX hat recht.
gibt es da keine Möglichkeit das scrollen anders zu machen?
Jürgen Linder

Geändert von juelin ( 1. Dez 2015 um 15:08 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

StringGrid-Inhalte vollständig darstellen

  Alt 1. Dez 2015, 15:54
Es gibt Situationen, in denen es hilfreich ist, den Abstand zum bearbeiteten Objekt etwas zu vergrößern – das altbekannte Wald-Bäume-Thema. Hier schient mir eine solche Situation zu bestehen. Erreicht werden soll, daß der Anwender beim Betrachten eines Stringgrids deren Inhalte auch dann vollständig sehen kann, wenn sie aufgrund der Spaltenbreite nicht vollständig dargestellt werden können. Die bereits vorgeschlagene Lösung, die Spaltenbreite der betreffenden Zeile ins schier Unendliche zu verbreitern, stößt dabei auf gewisse Probleme. Betrachten wir die anderen Optionen:

1. Möglichkeit: Hint einsetzen

Da es sich offenbar nur um eine problematische Spalte handelt, die zu lange Texte enthält, um vollständig darstellbar zu sein, könnte man beim Zeilenwechsel (z.B. in OnClick) die Hint-Eigenschaft des StringGrids dazu verwenden, den gesamten Text anzuzeigen. Nehmen wir an, es ist die vierte Spalte mit dem Index 3 (weil nullbasierend):
Delphi-Quellcode:
procedure TFormMain.GridClick(Sender: TObject);
begin
  Grid.Hint := Grid.Cells[3,Grid.Row];
end;
Das Property ShowHint der Grid-Komponente sollte dabei natürlich True sein. Einen Nachteil hat diese Lösung: Der Hint wird möglicherweise nicht lange genug angezeigt, um den gesamten Text lesen zu können.

2. Möglichkeit: WordWrap simulieren mit Text via Code in Zelle schreiben

Im Ereignis OnDrawCell der StringGrid-Komponente werden die Parameter Spalte (ACol) und Zeile (ARow) als Integerwerte übergeben sowie der Bereich, den die Zelle einnimmt: Integer; Rect: TRect. Nun kann man wie oben gezeigt den Text dieser Zelle daraufhin überprüfen, ob er in die Spaltenbreite hineinpaßt. Je nach Länge unterteilt man den Text dann in geeignete Teile und schreibt sie in der Zelle untereinander – ein selbstgebasteltes WordWrap also.

3. Möglichkeit: TjvDBGrid einsetzen

Das TjvDBGrid – die Jedi-Erweiterung des TDBGrid – bietet die Möglichkeit, Zeilen umzubrechen. Nun benötigt das TjvDBGrid jedoch eine Datenquelle. Diese kann man selbst erstellen, indem man ein TClientDataset verwendet und es entsprechend mit Daten befüllt. Nun weist man dem TClientDataset einfach ein DataSource zu, welches man als DataSource im entspreochenden TjvDBGrid-Property einträgt. Danach setzt man im OI das Property WordWrap auf True, wonach Zeilen, die zu lang sind, automatisch umbrochen werden. Ich hab's nicht getestet, aber das könnte der TE ja jetzt tun ...

Vielleicht gibt es noch weitere Möglichkeiten, dieses Problem zu lösen, mir fallen aber im Moment keine ein ...
  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 04:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz