Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TStringGrid array (https://www.delphipraxis.net/177554-tstringgrid-array.html)

GoTo0815 13. Nov 2013 11:04

TStringGrid array
 
Guten Tag,

heute habe ich in einem Projekt von mir folgendes gefunden:

Delphi-Quellcode:
  myStringGrid.RowCount:= OtherStringGrid.RowCount; // beispielsweise ist aStringGrid.RowCount := 5;
  myStringGrid.Cells[0,OtherStringGrid.RowCount]:= 'bla bla bla'; // hier dürfte doch als Maximum nur Cells[0, 5-1] stehen oder???
Wieso kann ich ohne Fehlermeldung einer StringGrid-Zelle ohne Fehlermeldung einen Wert zuweisen, die Außerhalb liegt?
Ist das Array von TStringGrid größer als die Grenzen die durch RowCount und ColCount gesetzt werden?

Erst später folgt in meinem Code die Erhöhung des RowCounts von myStringGrid und tatsächlich ist der Wert 'bla bla bla' vorhanden.

Ist dieses verhalten ein Bug oder kann ich mich darauf verlassen und so mit sichtbaren und unsichtbaren Inhalten arbeiten.

Danke im Voraus und sorry, wenn das bereits irgendwo besprochen wurde. Habe es nicht gefunden.
In der Delphi Hilfe wird noch von einem RowHeights gesprochen. Konnte damit aber nichts anfangen.

himitsu 13. Nov 2013 11:16

AW: TStringGrid array
 
Delphi-Quellcode:
procedure TStringGrid.SetCells(ACol, ARow: Integer; const Value: string);
begin
  TStringGridStrings(EnsureDataRow(ARow))[ACol] := Value; // <<<<<< EnsureDataRow
  EnsureColRow(ACol, True);
  EnsureColRow(ARow, False);
  Update(ACol, ARow);
end;
Und die StringList-Matrix, welche die Daten hält, muß nicht die selben Abmessungen haben, wie die angezeigten Spalten/Zeilen des Grids.

GoTo0815 13. Nov 2013 12:01

AW: TStringGrid array
 
... Also nur um noch einmal deutlich zu machen, dass ich das auch korrekt verstanden habe.

Im Klartext:
Bei enem TStringGrid ist die Matrix dynamisch!?
RowCount und ColCount regulieren nur die Grenzen der Sichtbarkeit der Felder?!

Man lernt halt nie aus :-) !!!

Perlsau 13. Nov 2013 14:15

AW: TStringGrid array
 
Zitat:

Zitat von HendrikSturm (Beitrag 1235713)
Im Klartext:
Bei enem TStringGrid ist die Matrix dynamisch!?
RowCount und ColCount regulieren nur die Grenzen der Sichtbarkeit der Felder?!

Wußte ich auch nicht, da nie ausprobiert. Doch eben hab ich's mal kurz getestet und tatsächlich: Man kann in einem StringGrid Feldern, die nicht sichtbar sind, einen String zuweisen, ohne daß ein Laufzeitfehler entsteht. Macht man die unsichtbaren Zeilen und Spalten sichtbar, findet man dort die zuvor zugewiesenen Strings vor.

GoTo0815 13. Nov 2013 15:40

AW: TStringGrid array
 
andersherum also auch darauf achten, dass ein RowCount := Rowcount - 1 nicht die letzte Zeile inhaltlich löscht...

bcvs 13. Nov 2013 15:42

AW: TStringGrid array
 
Das kenne ich schon und habe es schon mal bewusst verwendet, wenn es darum ging, eine unbekannte, aber große Menge von Zeilen in ein Stringgrid zu laden: Erst die Cells[] füllen und ganz zum Schluss einmal RowCount setzen. Geht schneller als RowCount jedesmal nach dem Einlesen einer Zeile zu erhöhen.


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