TStringGrid array
Guten Tag,
heute habe ich in einem Projekt von mir folgendes gefunden:
Delphi-Quellcode:
Wieso kann ich ohne Fehlermeldung einer StringGrid-Zelle ohne Fehlermeldung einen Wert zuweisen, die Außerhalb liegt?
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??? 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. |
AW: TStringGrid array
Delphi-Quellcode:
Und die StringList-Matrix, welche die Daten hält, muß nicht die selben Abmessungen haben, wie die angezeigten Spalten/Zeilen des Grids.
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; |
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 :-) !!! |
AW: TStringGrid array
Zitat:
|
AW: TStringGrid array
andersherum also auch darauf achten, dass ein RowCount := Rowcount - 1 nicht die letzte Zeile inhaltlich löscht...
|
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