![]() |
Collection geht nich
Ich wollte ein Programm schreiben was zum Speichern von Hotkeys eine Collection verwendet. Alles schön und gut, bei Google nach Anleitungen zur Collection gesucht weil ich mit denen irgendwie nich ganz klarkam, bin dann auf diese hier gestoßen:
![]() Dann hab ich bemerkt, dass in dem von Add zurückgegebenen Item Index immer den Wert -1 hat... Hab ich irgendwas falsch gemacht oder soll das so sein? Hier mal der Inhalt von ner Unit nur mit dem grundlegendem Kram drin:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type THotkeyCollectionItem = class; THotkeyCollection = class(TCollection) private FOwner: TPersistent; function GetItem(Index: Integer): THotkeyCollectionItem; procedure SetItem(Index: Integer; Value: THotkeyCollectionItem); protected function GetOwner: TPersistent; override; public constructor Create(AOwner: TPersistent); function Add: THotkeyCollectionItem; property Items[Index: Integer]: THotkeyCollectionItem read GetItem write SetItem; default; end; THotkeyCollectionItem = class(TCollectionItem) private FHotkey: TShortcut; FAction: Cardinal; FSendKey: TShortcut; FSendAction: Cardinal; public constructor Create(Collection: TCollection); override; published property Hotkey: TShortcut read FHotkey write FHotkey; property Action: Cardinal read FAction write FAction; property SendKey: TShortcut read FSendKey write FSendKey; property SendAction: Cardinal read FSendAction write FSendAction; end; type TForm1 = class(TForm) Button1: TButton; procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private Collection: THotkeyCollection; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin MessageBox(Handle, PChar(IntToStr(Collection.Add.Index)), '', 0); end; procedure TForm1.FormCreate(Sender: TObject); begin Collection := THotkeyCollection.Create(Application); end; procedure TForm1.FormDestroy(Sender: TObject); begin Collection.Free; end; { TMyCollection } constructor THotkeyCollection.Create(AOwner: TPersistent); begin inherited Create(THotkeyCollectionItem); FOwner := AOwner; end; function THotkeyCollection.Add: THotkeyCollectionItem; begin Result := THotkeyCollectionItem(inherited Add); end; function THotkeyCollection.GetItem(Index: Integer): THotkeyCollectionItem; begin Result := THotkeyCollectionItem(inherited GetItem(Index)); end; function THotkeyCollection.GetOwner: TPersistent; begin Result := FOwner; end; procedure THotkeyCollection.SetItem(Index: Integer; Value: THotkeyCollectionItem); begin inherited SetItem(Index, Value); end; { TMyCollectionItem } constructor THotkeyCollectionItem.Create(Collection: TCollection); begin FHotkey := 49217; FAction := 0; FSendKey := 49217; FSendAction := 0; end; end. Bei Bedarf geb ich auch gerne noch mehr Infos raus. |
Re: Collection geht nich
Hallo Colt Storm,
hast du es schon mal alternativ mit der ![]() Greetz alcaeus |
Re: Collection geht nich
Danke für den Tipp!
Ich hab mein Programm jetzt auf DPCollection umgeschrieben und alles funktioniert bestens! :bounce2: |
Re: Collection geht nich
Glueckwunsch. Guck dir mal den letzten Beitrag an, in dem es um die Collection-Templates geht. Sobald du dich mal damit auskennst, kannst du dir viel Arbeit ersparen ;)
Ausserdem kannst du, wenn dich das Thema interessiert, dir auch das ![]() Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 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