Announcement

Collapse
No announcement yet.

Stringgrid und Spalte.IndexOf

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Stringgrid und Spalte.IndexOf

    Hallo Delphi-Fans,

    ist das jemandem schonmal aufgefallen:

    Wenn zur Laufzeit ein TStringgrid kreiert wird, und man Zeilen iterativ einträgt über z.B.:<pre>
    MySgrid.cells[0,i]:=strTexta;
    MySgrid.cells[1,i]:=strTextb;
    inc(i)
    </pre>
    dann findet später der Befehl <pre>MySgrid.Cols[0].IndexOf(strTextzumVergleich);</pre> keine Einträge, die ab der sechsten Zeile vorkommen.
    Die Modifikation<pre>
    MySgrid.cells[0,i]:=strTexta;
    MySgrid.cells[1,i]:=strTextb;
    MySgrid.rowcount:=i;
    inc(i)
    </pre>
    behebt den Fehler.

    Wenn man ein TStringgrid zur Entwurfszeit erzeugt, steht es standardmäßig auf Rowcount=5 (ist das irgendwo einstellbar?).

    Offenbar gilt also folgendes:

    1. IndexOf durchsucht nur bis zu Rowcount-ten Zeile.<br>
    2. Rowcount erhöht sich nicht bei direkter Belegung der Cell.

    Aber ein iteratives Vorgehen à la<pre>
    MySgrid.cols[0].add(strTexta);
    MySgrid.cols[1].add(strTextb);
    inc(i) // i nur noch als Laufvariable erforderlich
    </pre>
    gibt es so gar nicht, im Gegensatz zum Fall einer einspaltigen Liste (z.B. TStringList), wo hier auch die Eigenschaft TStringList.Colcount durch Add automatisch erhöht wird.

    Natürlich ist mir auch klar, daß es bei einer mehrspaltigen Liste nicht unabhängige Colcounts geben sollte (das macht kaum Sinn). Aber Grid.Rowcount könnte sich doch eigentlich automatisch auf die höchste vorkommende Colcount setzen, oder? Dann könnte das TStringgrid-Objekt unterschiedliche Colcounts wiederum damit ebenfalls abgleichen, also alle Spalte immer auf gleiche Länge aufstocken.

    Hätte, könnte... so ist TStringgrid halt nicht implementiert ;-)

    Mich würden andere Erfahrungen/Meinungen/Workarounds/Sonstiges dazu interessieren.

    Greetings2u<br>
    Alex

  • #2
    Niemand??? :

    Comment


    • #3
      Somit verhält sich TStringGrid genau so, wie es in der Online-Hilfe steht, nämlich daß die Größe des Arrays über ColCount und RolCount definiert wird: <I>Mit RowCount können Sie die Anzahl der Einträge im Array RowHeights bestimmen. Stellen Sie RowCount ein, um Zeilen am unteren Rand des Gitters einzufügen oder zu löschen. Der Wert von RowCount enthält alle fixierten Zeilen am oberen Rand des Gitters sowie die verschiebbaren Spalten.</I&gt

      Comment

      Working...
      X