String Grid und Objekte
-
Hi,
kennt jemand eine gute Seite wo man seiht wie das funktioniert.
Ich möchte in meinem StringGrid pro Zeile ein Objekt anlegen (Wenn das nicht geht dann für die erste Spalte meiner Zeile) und in dem Objekt ein DWORD speichern.
MfG
-
Hallo
TStringGrid nimmt als Zellwerte nur AnsiString auf. Du kannst aber über desen Eigenschaft TStringGrid::Objects jeder Zelle noch ein zusätzliches Objekt hinterlegen. Dann bist du natürlich verantwortlich dafür das einerseits der Speicher des Objekts verwaltet wird, und auch für die Ausgabe in StringGrid selber.
Eventuell lohnt sich auch ein Blick auf TDrawGrid, dort kannst du die hinter den Zellen liegenden Werte ganz selbst bestimmen, must dann aber auch alles selber verwalten und zeichnen.
bis bald
akari
-
ja genau das will ich für die erste Spalte meines Grids ein objekt hinterlegen das ein DWORD aufnehmen kann:
also ich schreibe den Text mit.
SGEPCs->Cells[0][Zeile] = "Text";wie bekomm ich jetzt ein zugehöriges Objekt in das ich mein DWORD schreiben kann?
MfG
-
Hallo
Du könntest von TObject ableiten und eine neue Containerklasse bauen die nur deinen DWORD aufnimmt. In dem Fall must du allerdings noch den Speicher der Containerinstanzen verwalten.
Wenn allerdings pro Zelle nur ein DWORD zugeordnet ist kannst du auch tricksen.
DWORD ist auf 32-bit Windows gleichzusetzten mit unsigned int, und das kannst du auch in die Adresse eines Pointers reinpackenDWORD value = ...; SGEPCs->Objects[0][Zeile] = reinterpret_cast<TObject*>(value); ... value = reinterpret_cast<DWORD>(SGEPCs->Objects[0][Zeile]);Das geht aber ausschließlich für integrale Typen die maximal der Speicherbreite entsprechen.
bis bald
akari
-
Da jede Zeile eines StringGrids als StringList repräsentiert wird (TStringGrid::Rows), wäre ggf. auch der Weg über TStringList::Objects möglich.
-
Hallo
Richtig. Wobei Rows, Cols und Objects alle auf die selben Daten zugreifen.
bis bald
akari