Hiho,
Ich mache grade meine ersten Gehversuche mit Collections. Wie nicht anders zu erwarten scheint es zunächst zu scheitern, aber ich vertraue mal wieder auf euch
Also, aus verschiedenen Tutorials zusammengelesen und geklaubt ist nun folgender Code:
Delphi-Quellcode:
type
THotkey = class;
THotkeyList = class(TCollection)
private
FOwner: TPersistent;
function GetItem(Index: Integer): THotkey;
procedure SetItem(Index: Integer; Value: THotkey);
protected
function GetOwner: TPersistent; override;
procedure Update(Item: TCollectionItem); override;
public
constructor Create(AOwner: TPersistent);
function Add: THotkey;
property Items[Index: Integer]: THotkey read GetItem write SetItem; default;
end;
THotkey = class(TCollectionItem)
private
FVKCode: Cardinal;
FModifier: Cardinal;
public
constructor Create(Collection: TCollection); override;
procedure Assign(Hk: TPersistent);
published
property VKCode: Cardinal read FVKCode write FVKCode;
property Modifier: Cardinal read FModifier write FModifier;
end;
implementation
procedure THotkey.Assign(Hk: TPersistent);
begin
with Hk as THotkey do
begin
FVKCode:=VKCode;
FModifier:=Modifier;
end;
end;
constructor THotkey.Create(Collection: TCollection);
begin
FVKCode:=0;
FModifier:=0;
end;
constructor THotkeyList.Create(AOwner: TPersistent);
begin
inherited Create(THotkey);
FOwner := AOwner;
end;
function THotkeyList.Add: THotkey;
begin
Result := THotkey(inherited Add);
end;
function THotkeyList.GetItem(Index: Integer): THotkey;
begin
Result := THotkey(inherited GetItem(Index));
end;
function THotkeyList.GetOwner: TPersistent;
begin
Result := FOwner;
end;
procedure THotkeyList.Update(Item: TCollectionItem);
begin
// <-- Muss hier was hin?
end;
procedure THotkeyList.SetItem(Index: Integer; Value: THotkey);
begin
inherited SetItem(Index, Value);
end;
Nun, vorher habe ich dafür eine ObjectList verwendet und es hat wunderbar geklappt...
Aber ich wollte die halt auch im Objekt-Inspektor verwenden können...und dafür scheinen Collections ja ein muss zu sein.
Wenn ich die entsprechende Eigentschaft im Objektinspektor anklicke (sie wird schon mal angezeigt...) kommt die übliche leere Liste (soweit, so gut). Möchte ich dann aber ein Item hinzufügen legt sich Delphi mit einer
AV auf die Nase.
Was mache ich in dem Code hier noch falsch?