AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Zugriff auf gemeinsame Eigenschaft in unterschiedlichen Klassen
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf gemeinsame Eigenschaft in unterschiedlichen Klassen

Ein Thema von norwegen60 · begonnen am 6. Nov 2018 · letzter Beitrag vom 11. Nov 2018
 
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
509 Beiträge
 
Delphi 12 Athens
 
#1

Zugriff auf gemeinsame Eigenschaft in unterschiedlichen Klassen

  Alt 6. Nov 2018, 15:03
Hallo zusammen,

ich suche eine Möglichkleit wie ich in einer Klassenstruktur auf ein beliebiges Parent-Object zugreifen kann.

Ich habe beispielhaft folgende Klassenstruktur
Delphi-Quellcode:
  TBase = class
  private
    FNr: Integer;
    FParentObject: TObject;
  public
    property Nr: Integer read FNr write FNr;
    property ParentObject: TObject read FParentObject write FParentObject;
  end;
  
  TMessData1 = class(TBase)
  private
    FMessdata1: Real;
  public
    property FMessdata1: Realread FMessdata1 write FMessdata1;
  end;

  TMessData1List = class(TObjectList<TMessData1>)
  private
    FParentObject: TObject;
  public
    property ParentObject: TObject read FParentObject write FParentObject;
  end;

  TMessData2 = class(TBase)
  private
    FMessdata2: Real;
    FMessDataList1: TMessData1List;
  public
    property FMessdata2: Realread FMessdata2 write FMessdata2;
  end;

  TMessData2List = class(TObjectList<TMessData2>)
  private
    FParentObject: TObject;
  public
    property ParentObject: TObject read FParentObject write FParentObject;
  end;

  TGeraet = class(TBase)
  private
    FBezeichnung: String;
    FMessDataList2: TMessData2List;
  public
    property Bezeichnung: Realread FBezeichnung write FBezeichnung;
  end;
Die Struktur sieht also so aus
Code:
TGeraet
    - TMessDataList2
        - MessData2_1
            - TMessDataList1
                - MessData1_1
                - MessData1_2
                - MessData1_n
        - MessData2.2
            - TMessDataList1
                - MessData1_11
                - MessData1_12
                - MessData1_1n
        - MessData2.n
            - TMessDataList1
                - MessData1_21
                - MessData1_22
                - MessData1_2n
Da in allen Elementen die Eigenschaft ParentObject vorhanden ist, ist es grundsätzlich kein Problem z.B. aus MessData1_2n über
Geraet = TMessDataList2(TMessData2(TMessDataList1(ParentObject).ParentObject).ParentObject

oder über die Basisklasse
Geraet = TMessDataList2(TBase(TMessDataList1(ParentObject).ParentObject).ParentObject
Ich suche aber eine Möglichkeit, wo ich die Struktur nicht kennen muss sondern über eine Schleife so lang über ParentObject nach oben klettere bis ich die Klasse TGeraet erreicht habe. Ohne die Listen dazwischen würde es über die Basisklasse TBase gehen. Wie aber komme ich in der TObjectList weiter hoch?

Ich hoffe ich habe mich verständlich ausgedrückt. Hintergrund ist, dass die Klassenstruktur etwas komplexer ist. Z.B. könnte das Konstrukt TMessDataList1 auch direkt in TGeraet hängen.

Vielen Dank
Gerd

PS: Die Idee, in ParentObject nicht die Liste sondern die darüber liegende Klasse anzugeben, nutzt nichts. Es könnte auch sein, dass ich nicht TGeraet sondern TMessData2List suche.
-

Geändert von norwegen60 ( 6. Nov 2018 um 15:10 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 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 by Thomas Breitkreuz