![]() |
Umgang mit Collections - AV im OI
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:
Nun, vorher habe ich dafür eine ObjectList verwendet und es hat wunderbar geklappt...
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; 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? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz