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

Stringgrid ColWidth

  Alt 1. Dez 2015, 12:55
Hallo Alle,
wie kann man die ColWidth sehr groß setzen (10000 oder mehr).
StringGrid1.ColWidths[Nummer}:=10000; funktioniert nicht.
Gib es da eine Begrenzung?
Gruß Jürgen
Benutze Delphi 7
Jürgen Linder

Geändert von juelin ( 1. Dez 2015 um 13:50 Uhr)
  Mit Zitat antworten Zitat
TiGü
Online

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Stringgrid ColWidth

  Alt 1. Dez 2015, 13:53
in Delphi Seattle geht das StringGrid1.ColWidths[0] := 10000; Hast du schon mal in den Setter procedure TCustomGrid.SetColWidths(Index: Longint; Value: Integer); in der Unit Grids.pas reindebuggt?
Gibt es da eine Prüfung, die das verhindert?
  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, 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 p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Stringgrid ColWidth

  Alt 1. Dez 2015, 14:28
StringGrid1.ColWidths[Nummer}:=10000; funktioniert nicht.
was bedeutet "funktioniert nicht"? Der Bildschirm explodiert, das Form wird schwarz und bekommt zartrosa Punkte?

etwas genauer wäre schon nicht schlecht.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Stringgrid ColWidth

  Alt 1. Dez 2015, 14:35
Screenshot? Codezeilen? Beispielprogramm?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#6

AW: Stringgrid ColWidth

  Alt 1. Dez 2015, 14:39
Selbst bei Delphi 6 geht

StringGrid1.ColWidths[1] := 10000;

Das Problem ist eher, dass die Spalte breiter ist wie die Breite des Grids und somit immer nur der linke Bereich angezeigt wird.

Wenn Du dann nach rechts Scollst, dann wandert diese (überbreite) Spallte aus der Anzeige heraus, da das Grid immer nur Spaltenweise scollt..
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Stringgrid ColWidth

  Alt 1. Dez 2015, 14:45
Delphi 7

dashier funktioniert:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
          i : Integer;
          s : String;
begin
  stringgrid1.ColWidths[0] := 10000;
  for i := 0 to 1024 do begin
    s := s + Chr((i mod 10) + 48);
  end;
  stringgrid1.Cells[0,1] := s;
end;
Als Ergebnis erhalte ich dieses:
Code:
01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
Statt 1024 funktioniert das 10fache auch problemlos.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

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
 
#9

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
 
#10

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 15:11 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