Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Brauche hilfe bei Property (https://www.delphipraxis.net/136582-brauche-hilfe-bei-property.html)

SimStar001 3. Jul 2009 09:48


Brauche hilfe bei Property
 
Hallo,

ersteinmal meine Klassen:


Delphi-Quellcode:
Type TMyclass2 = class
  private
  FData1 : integer;
  FData2 : integer;
  public
  constructor create;
  destrutor destroy; override;

  property Data1 : integer read FData1;
  property Data2 : integer read FData2;
  end;

Type TMyClass = Class
  private
  FDaten : array of TMyClass2;
  function GetDaten (Index : integer): integer;
  public;
  construcotr create;
  destructor destroy; override;

  property Data1[index : integer] : array of TMyclass2 : read GetDaten;
  end;

implementation

function TMyClass.getDaa1;
begin
  result := self.fDaten[index].Data1;
end;
Soweit jetzt mal meine Beispielstruktur.

Jetzt kann ich ja über die property Data1 auf Fdata1 in TMyClass2 zugreifen.

Doch wie muss ich jetzt das ganze anstellen, damit ich auf in TMyClass dann ebenfalls auf Data1 zugreifen kann, welches sich ja dann im Array befindet.

Zugriff sollte so aussehen -->
Delphi-Quellcode:
var Test : Tmyclass;
...
Test.Daten[0].Data1;
ist das überhaupt möglich?

[EDIT] Im Prinzip soll es eine property werden, bei der ich einen Index angebe, und dann auf die property des objectes im Array zugreifen kann

Andreas L. 3. Jul 2009 10:34

Re: Brauche hilfe bei Property
 
Ich würde an deiner Stelle eine TObjectList verwenden.

Delphi-Quellcode:
uses
  ..., ContNrs;

type
  TMyList = class;
  TMyItem = class;

  TMyList = class(TObjectList)
  protected
    function GetItem(Index: integer):TMyItem;
  public
    property Items[Index: Integer]: TMyItem read getItem; default;
  end;

  TMyItem = class(TPersistent)
  private
    FFeld1: Integer;
  published
     property Feld1: Integer read FFeld1;
  end;

//Verwendung:

var
  List: TMyList;
begin
  List := TMyList.Create;
  try
    IrgendeineVariable := List[0].Feld1;
  finally
    List.Free;
  end;
end;
1

guidok 3. Jul 2009 16:28

Re: Brauche hilfe bei Property
 
Ich denke mal die Property Data1 sollte vom Typ TMyClass2 sein. Dann kannst du über Index auf ein Element des Array of TMyClass2 zugreifen. Die beiden Datenfelder Data1 und Data2 sind dann wieder Propertys auf die du zugreifen kannst.


Delphi-Quellcode:
Type TMyClass = Class
  private
  FDaten : array of TMyClass2;
  function GetDaten (Index : integer): integer;
  public;
  construcotr create;
  destructor destroy; override;

  property Data[index : integer] : TMyclass2 : read GetDaten;
  end;

implementation

function TMyClass.getData;
begin
  result := self.fDaten[index];
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 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