Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FreePascal [gelöst]: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen (https://www.delphipraxis.net/183966-%5Bgeloest%5D-lazarus-stringgrid-rowcount-zur-laufzeit-erhoehen.html)

Kralle 16. Feb 2015 16:34


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

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

Muß da noch vorher irgendwo irgendein Schalter gesetzt werden?

Gruß Heiko

Der schöne Günther 16. Feb 2015 17:01

AW: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen
 
Das sollte aber funktionieren- Fehlermeldung, irgendwas? Ansonsten musst du natürlich bedenken dass "RowCount" bereits inklusive der Überschriftenzeilen (FixedRows) ist.

Bernhard Geyer 16. Feb 2015 18:06

AW: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen
 
Fragen über Fragen.
Die Wichtigste ist wohl: Was bedeutet "Funktioniert nicht"?

Kralle 16. Feb 2015 19:35

AW: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen
 
Moin Bernhard,

Zitat:

Zitat von Bernhard Geyer (Beitrag 1290098)
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
Delphi-Quellcode:
RowCount
manuell hoch, funktioniert alles.

Gruß HEiko

Kralle 16. Feb 2015 21:06

AW: Lazarus: StringGrid.RowCount zur Laufzeit erhöhen
 
Die Lösung:
gefunden hier: http://www.delphipraxis.net/741566-post2.html

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


Gruß Heiko

BadenPower 16. Feb 2015 22:40

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

Zitat von Kralle (Beitrag 1290107)
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]"


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 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