Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ObjectList überschreiben? (https://www.delphipraxis.net/68119-objectlist-ueberschreiben.html)

McMorton 24. Apr 2006 22:38


ObjectList überschreiben?
 
Hallo

Ich habe schon wieder eine Anfängerfrage:

Ich benutze in meinem Programm die TObjectList.

Wenn ich dort Objekte reinlade kann ich ja nur durchs casten auf sie zugreifen.

Nun weiß ich das man die ObjectList irgentwie überschreiben kann. Sich also ne ObjectList spezielle für das Objekt schaffen kann.

Leider habe ich absolut keine Ahnung wie das geht.
Wer kann mir da helfen?

Kroko1999 25. Apr 2006 06:45

Re: ObjectList überschreiben?
 
Delphi-Quellcode:
type
TMyObject = class;

TMyObjectList = class (TObjectList)
private
  function GetMyObject (const AIndex: Integer): TMyObject;
public
  property MyObject[const AIndex: Integer]: TMyObject read GetMyObject;
end;

function TMyObjectList.GetMyObject (const AIndex: Integer): TMyObject;
begin
  Result := TMyObject (Items[AIndex]);
end;

Die Muhkuh 25. Apr 2006 13:28

Re: ObjectList überschreiben?
 
Hi,

wobei ich das überschreiben der property Items vorziehe:

Delphi-Quellcode:
TMyObject = class(TObject)
private

public
  // Some propertys
end;


TMyObjectList = class(TObjectList)
private
  function GetItem(Index: Integer): TMyObject;
public
  property Items[Index: Integer]: TMyObject read GetItem;
end;

implementation

function TMyObjectList.GetItem(Index: Integer): TMyObject;
begin
  Result := TMyObject(inherited Items[Index]);
end;

jbg 25. Apr 2006 17:06

Re: ObjectList überschreiben?
 
Zitat:

Zitat von Spider
wobei ich das überschreiben der property Items vorziehe:

Dann aber das "default" nicht vergessen:

Delphi-Quellcode:
TMyObjectList = class(TObjectList)
private
  function GetItem(Index: Integer): TMyObject;
public
  property Items[Index: Integer]: TMyObject read GetItem; {-->}default;{<--}
end;
Sonst kann man nicht mehr MyList[i] schreiben und muss immer MyList.Items[i] schreiben.

Die Muhkuh 25. Apr 2006 17:43

Re: ObjectList überschreiben?
 
OK, hast recht. Ich hab mir aber angewöhnt immer MyList.Items[I] zu schreiben *g*

McMorton 25. Apr 2006 23:07

Re: ObjectList überschreiben?
 
Danke. Genau das habe ich gesucht.

Ich muss dann also alle Funktionen überschreiben, die ansonsten TObject zurückgeben würde (falls ich sie verwenden will)
Z.B. Last, First, ...

alcaeus 25. Apr 2006 23:14

Re: ObjectList überschreiben?
 
Hallo,

anstatt TObjectlist zu ueberschreiben, kannst du die Klasse auch ableiten. Mit dem Objectlist-Template ist dies auch kein grosser Aufwand ;)

Greetz
alcaeus

GuenterS 26. Apr 2006 00:00

Re: ObjectList überschreiben?
 
Zitat:

Zitat von alcaeus
Hallo,

anstatt TObjectlist zu ueberschreiben, kannst du die Klasse auch ableiten. Mit dem Objectlist-Template ist dies auch kein grosser Aufwand ;)

Greetz
alcaeus

Wie macht man das denn in Delphi7?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz