Deine Assign-Methode ist nicht vollständig:
Delphi-Quellcode:
procedure TChecklistItem.Assign(Source: TPersistent);
begin
If Source is TChecklistItem then
begin
// hier wird nur ein einziges Property kopiert
tn:=TChecklistItem(Source).itemname;
// alle Properties der Basisklasse TCollectionItem werden nicht kopiert
end
else
inherited Assign(Source);
end;
Ich gehe mal davon aus, dass TCollectionItem.Assign() im Sourcecode der
VCL existiert (bitte prüfen).
Also kannst du diese Methode aufrufen und danach (!) noch das kopieren was noch fehlt:
Delphi-Quellcode:
procedure TChecklistItem.Assign(Source: TPersistent);
begin
inherited Assign(Source);
// sollte (Source is TCollectionItem) nicht wahr sein, dann gibts 'ne Exception
If Source
is TChecklistItem
then
begin
tn:=TChecklistItem(Source).tn;
end;
end;
Die Struktur sieht jetzt etwas anderst aus, als man das von der Assign-Methode gewöhnt ist, aber das hat damit zu tun,
dass wir es uns sparen ALLE Properties zu kopieren.