Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   StringGrid verliert Object bei goColMoving (https://www.delphipraxis.net/177830-stringgrid-verliert-object-bei-gocolmoving.html)

bogdan 29. Nov 2013 15:16

StringGrid verliert Object bei goColMoving
 
Ich verstehe den Zusammenhang nicht Zwischen Row und Col wieso das folgende Problem auftaucht:

Delphi-Quellcode:
xGrid.Cols := 7; // also 0 bis 6
xGrid.FixedRows := 1;
xGrid.FiexdCols := 0;
In eine StringGrid (xGrid) Komponente werden Daten (ca. 40 Datensätze mit ID-Nr) aus einer Query Komponente geschrieben. Und ein Integer Object (Datensatz IDNr) der Rows zugewiesen:
Delphi-Quellcode:
xGrid.Rows[i].Objects[i] := TObject(xQuery.Fields[j].AsInteger);
Es gibt keinen Datensatz-Wert der bei 0 liegt.
Beim xGrid.OnClick Event wird der Integer-Wert des Objektes der angeklickten Row auch richtig angezeigt.

folgendes Problem habe ich aber beim verschieben der Columnen:
FromIndex=0 ToIndex=1, dann bekomme ich bei Row[1] den IntegerWert 0.
FromIndex=0 ToIndex=2, dann bekomme ich bei Row[1] und Row[2] den IntegerWert 0.
FromIndex=0 ToIndex=3, dann bekomme ich bei Row[1], Row[2] und Row[3] auch wieder den IntegerWert 0.
usw.

Verschiebe ich die Columne wieder an Ihre alte Position sind die Integer Werte wieder richtig.

Ich verstehe nicht wieso der Integer Wert des Row-Objektes nach dem verschieben der Cols nicht richtig angezeigt wird?

bcvs 30. Nov 2013 14:34

AW: StringGrid verliert Object bei goColMoving
 
Zitat:

Zitat von bogdan (Beitrag 1237929)
. Und ein Integer Object (Datensatz IDNr) der Rows zugewiesen:
Delphi-Quellcode:
xGrid.Rows[i].Objects[i] := TObject(xQuery.Fields[j].AsInteger);

Damit verwendest du die Eigenschaft Objects der Rows-Eigenschaft, die eine StringList für die Zellen der Row verwaltet. Dein Object wird also an die Col i gebunden.

Sollte das nicht besser heißen:
Delphi-Quellcode:
xGrid.Objects[0, i] := TObject(xQuery.Fields[j].AsInteger);

Damit wird das Object an die Col 0 der Row i und damit eingeutig an die Zeile gebunden.


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