AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FreePascal [gelöst]: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen

[gelöst]: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen

Ein Thema von Kralle · begonnen am 16. Feb 2015 · letzter Beitrag vom 16. Feb 2015
Antwort Antwort
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
349 Beiträge
 
Delphi XE7 Professional
 
#1

[gelöst]: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen

  Alt 16. Feb 2015, 17:34
Moin,

ich möchte Daten aus einer StringList in StringGrid übertragen.
Da in der StringList mehr Zeilen vorhanden sind als zur Entwurfszeit dem StringGrid mittel RowCount zugewiesen wurden,
muß ich zur Laufzeit die Anzahl der Zeilen erhöhen.
Ein  StringGrid1.RowCount:=sl.count; funktioniert aber nicht.

Muß da noch vorher irgendwo irgendein Schalter gesetzt werden?

Gruß Heiko
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),

Geändert von Kralle (16. Feb 2015 um 22:07 Uhr) Grund: gelöst
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.716 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen

  Alt 16. Feb 2015, 18:01
Das sollte aber funktionieren- Fehlermeldung, irgendwas? Ansonsten musst du natürlich bedenken dass "RowCount" bereits inklusive der Überschriftenzeilen (FixedRows) ist.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
16.900 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen

  Alt 16. Feb 2015, 19:06
Fragen über Fragen.
Die Wichtigste ist wohl: Was bedeutet "Funktioniert nicht"?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
349 Beiträge
 
Delphi XE7 Professional
 
#4

AW: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen

  Alt 16. Feb 2015, 20:35
Moin Bernhard,

Fragen über Fragen.
Die Wichtigste ist wohl: Was bedeutet "Funktioniert nicht"?
Code:
Exception class "EGridException" at $005666C9 with message "Index Out of range Cell[Col=0 Row=24]"
weil
Delphi-Quellcode:
   StringGrid1.RowCount:=sl.count; //funktioniert anscheinend nicht
    for i := 0 to sl.count-1 do
        begin
         StringGrid1.Rows[i+1].StrictDelimiter := True;
         StringGrid1.Rows[i+1].CommaText:=sl.Strings[i];
   end;
nicht funktioniert.
Setzte ich im Objektinspektor den RowCount manuell hoch, funktioniert alles.

Gruß HEiko
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),

Geändert von Kralle (16. Feb 2015 um 20:37 Uhr)
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
349 Beiträge
 
Delphi XE7 Professional
 
#5

AW: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen

  Alt 16. Feb 2015, 22:06
Die Lösung:
gefunden hier: http://www.delphipraxis.net/741566-post2.html

 StringGrid1.RowCount:=sl.count+StringGrid1.FixedRows; // ohne den hinteren Teil funktioniert es nicht Aber warum ist das so?


Gruß Heiko
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#6

AW: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen

  Alt 16. Feb 2015, 23:40
Moin Bernhard,

Delphi-Quellcode:
StringGrid1.RowCount:=sl.count; //funktioniert anscheinend nicht
    for i := 0 to sl.count-1 do
        begin
         StringGrid1.Rows[i+1].StrictDelimiter := True;
         StringGrid1.Rows[i+1].CommaText:=sl.Strings[i];
   end;
Nehmen wir einmal an, dass Du 24 Eintrage in "sl" hast.

Also sl.Count ist 24.
In der 1. Anweisung setzt Du RowCount auf die Länge von sl (24).
Du hast also im Stringgrid Zeilen mit den Nummern 0 bis 23.

In der Schleife greifst Du aber auf die Zeilen 1 bis 24 zu.

Da es Zeile 24 nicht gibt ist der Index "Out of Range":
Code:
Exception class "EGridException" at $005666C9 with message "Index Out of range Cell[Col=0 Row=24]"
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.

Geändert von BadenPower (16. Feb 2015 um 23:42 Uhr)
  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 +2. Es ist jetzt 11:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf