Moin Philip,
danke für deine umfangreichen Ausführungen. Ich glaube/hoffe, dass ich es nun etwas besser verstehe. Ich habe nun auch den Code so aufgesplittet, dass die eigentliche Zeitstrafe eine Klasse abgeleitet von TObject ist und Penalties eine Klasse abgeleitet von TObjectlist ist.
Der Code sollte nun um einiges besser aussehen.
Zum besseren Verständnis erlaube ich mir aber trotzdem noch ein paar Fragen. Vorher aber schon mal der Code. Ich habe ihn so kurz wie möglich gehalten.
Delphi-Quellcode:
unit unt_penalty;
interface
type
TPenalty =
class
public
Team : Char;
//character of Team (A or B)
TTime :
String;
//total time of penaltie
CTime :
String;
//current time of penalty
Direction : byte;
//direction of running time 0:asc;1:desc
constructor Create;
end;
implementation
constructor TPenalty.Create;
begin
inherited;
end;
end.
Delphi-Quellcode:
unit unt_penalties;
interface
uses Contnrs, unt_Penalty;
type
TPenalties =
class(TObjectList)
public
constructor Create;
function AddPenalty(Penalty : TPenalty; PenaltyList : TObjectList): TObjectList;
//add a penalty
function DeletePenalty(Penalty : TPenalty; PenaltyList : TObjectList): TObjectList;
//delete a penalty
function EditPenalty(Penalty : TPenalty; PenaltyList : TObjectList): TObjectList;
//edit a penalty
end;
implementation
uses Classes;
constructor TPenalties.Create;
begin
inherited;
end;
function TPenalties.AddPenalty(Penalty : TPenalty; PenaltyList : TObjectList): TObjectList;
begin
//add a penalty
with PenaltyList
do
begin
Add(Penalty);
end;
end;
function TPenalties.DeletePenalty(Penalty : TPenalty; PenaltyList : TObjectList): TObjectList;
begin
//delete a penalty
with PenaltyList
do
begin
Delete(IndexOf(Penalty));
end;
end;
function TPenalties.EditPenalty(Penalty : TPenalty; PenaltyList : TObjectList): TObjectList;
begin
//edit a penalty
end;
end.
Und so habe ich es testhalber im MainForm mal eingebunden:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
MyPenalty : TPenalty;
MyPenalties : TPenalties;
begin
//erzeugen des penalty und zuweisen der daten
MyPenalty := TPenalty.Create;
MyPenalty.Team := 'A';
MyPenalty.TTime:= '00:02:00';
MyPenalty.CTime:= '00:02:00';
MyPenalty.Direction:= 0;
//erzeugen der penaltyliste und hinzufügen des penalty
myPenalties := TPenalties.Create;
mypenalties.AddPenalty(MyPenalty, MyPenalties);
end;
Es lässt sich kompilieren, aber ich habe natürlich noch das Problem, dass ich nicht weiss, wie ich dann an die einzelnen Penalty-Einträge in der Penaltyliste komme, wenn ich diese z.B.
Löschen, Editieren oder wegen laufenden Uhr updaten möchte...
Die Daten (die einzelnen Zeitstrafen) muss ich natürlich auch im Programm visualiseren, d.h. ich muss natürlich vorher die Daten nach Teams und Höhe der laufenden Uhr sortieren und dann intern (später auch extern) anzeigen.
Hast Du hierfür noch einen Tipp?
Habe ich sonst noch was falsch gemacht?