@Udontknow: Meine Item-Klasse ist vom Typ TList:
Delphi-Quellcode:
TPageCollection = Class(TObject);
private
FInnerList: TList;
x: Double;
// ...;
// ...;
public
procedure Add;
// ...;
// ...;
end;
oder meinst du den Typ der Objekte in der Liste? Die sind vom Typ TImageEnvect (so was wie ein TImage) und kennt die Methode
Assign (falls das hilft).
Lösen wir uns mal von dem TImage. Ich habe eben mal schnell eine Demo erstellt:
Delphi-Quellcode:
unit Adressen;
interface
uses
Classes;
type
TKontakt =
class(TObject)
private
FName:
String;
FAlter: Integer;
function GetAlter: Integer;
function GetName:
String;
procedure SetAlter(
const Value: Integer);
procedure SetName(
const Value:
String);
public
property Name:
String read GetName
write SetName;
property Alter: Integer
read GetAlter
write SetAlter;
end;
TKontaktCollection =
class(TObject)
private
FInnerList: TList;
function GetItem(
Index: Integer): TKontakt;
procedure SetItem(
Index: Integer;
const Value: TKontakt);
public
constructor Create;
destructor Destroy;
override;
procedure Add(Item: TKontakt);
function Count: Integer;
property Items[
Index: Integer]: TKOntakt
read GetItem
write SetItem;
end;
implementation
{ TKontakt }
function TKontakt.GetAlter: Integer;
begin
Result := FAlter;
end;
function TKontakt.GetName:
String;
begin
Result := FName;
end;
procedure TKontakt.SetAlter(
const Value: Integer);
begin
FAlter := Value;
end;
procedure TKontakt.SetName(
const Value:
String);
begin
FName := Value;
end;
{ TCollection }
procedure TKontaktCollection.Add(Item: TKontakt);
begin
FInnerList.Add(Item);
end;
function TKontaktCollection.Count: Integer;
begin
Result := FInnerLIst.Count;
end;
constructor TKontaktCollection.Create;
begin
inherited;
FInnerList := TLIst.Create;
end;
destructor TKontaktCollection.Destroy;
var
i : Integer;
begin
if FInnerList.Count > 0
then
begin
for i := FInnerList.Count - 1
to 0
do
begin
TObject(FInnerList.Items[i]).Free;
end;
end;
inherited;
end;
function TKontaktCollection.GetItem(
Index: Integer): TKontakt;
begin
Result := FInnerList.Items[
Index];
end;
procedure TKontaktCollection.SetItem(
Index: Integer;
const Value: TKontakt);
begin
FInnerList.Items[
Index] := Value;
end;
end.
Wie stelle ich jetzt eine Kopie von TKontaktCollection her mitsamt der inneren List? Das ist das Problem. Den bisherigen Code hab eich leider nicht ganz verstanden, weil es doch irgendwie immer etwas durcheinander ging.
(Im Anhang das gesamte Projekt.)