ich habe ein Stringgrid in dem in Zeilen die Tage eines Monats stehen und in Spalten die Mitarbeiter. In den Zellen steht die Arbeitszeit bzw der Abwesenheitsgrund (Urlaub, Krank,..) als Text. Die Spalten werden dynamisch erzeugt mit
Code: Alles auswählen
StringGrid1.Columns.Add;
Nun will ich in jeder Zelle Informationen hinterlegen. Bisher habe ich so was immer dadurch gelöst, dass ich den Zeiger in der Zelle
Code: Alles auswählen
StringGrid1.Objects[x, y]
Code: Alles auswählen
StringGrid1.Objects[x, v] := TObject(z);
Code: Alles auswählen
z := PtrUInt(StringGrid1.Objects[x,y])
Nun will ich aber mehr Informationen in den Zellen zwischenspeichern, nämlich Arbeitszeit in Minuten (UINT16) und Arbeitstyp(UINT8). Ich könnte zwar den Zeiger der 64 bit hat aufteilen, aber da ich flexibel sein will, teste ich die Verwendung einer Klasse. Ich habe mir folgendes zusammen gesucht/gereimt:
Deklaration der Klasse:
Code: Alles auswählen
type
TArbeitsTag = class
Bezahlte_Minuten : Uint16;
Arbeitstyp : Uint8;
end;
Dekalration der Variable:
Code: Alles auswählen
var
ArbeitsTag : TArbeitsTag;
Code: Alles auswählen
ArbeitsTag := TArbeitsTag.Create;
Code: Alles auswählen
StringGrid1.Objects[x, y] := ArbeitsTag;
Code: Alles auswählen
TArbeitsTag(StringGrid1.Objects[x, y]).Bezahlte_Minuten)
- Wie oft muss ich die Variable erzeugen? Einmalig oder vor jeder Zuweisung?
- Wann muss ich den Speicher freigeben?
- Gibt es eine einfachere Alternative zur Verwendung einer Klasse?