![]() |
wie auf die properies vom Eltern Object zugreifen
Ich habe eine Elternklasse "TFahrzeug" die wiederum private Kind-Objekte "TProtokoll1" und "TProtokoll2" hat.
Je nach Bedarf werden die Kinder zeugt. :-) Jetzt möchte das Kind-Object der Klasse TProtokoll1 auf die Propertys der Elternklasse zugreifen. Wie geht das bitte. Siehe letzt Methode.
Delphi-Quellcode:
Gruß Kostas
type
TProtokoll1 = class private FEigenesFeld: integer; procedure EmpfangVerarbeiten; end; type TProtokoll2 = class private FEigenesFeld: integer; procedure EmpfangVerarbeiten; end; type TFahrzeug = class private FKennzeichen: String; FProtokoll1: TProtokoll1; FProtokoll2: TProtokoll2; procedure EmpfangVerarbeiten; procedure SetKennzeichen(aKennzeichen:String); public property Kennzeichen: String read FKennzeichen write SetKennzeichen; end; procedure TFahrzeug.EmpfangVerarbeiten; begin if Data[1] = #1 then begin if not Assigned(FProtokoll1) then FProtokoll1 := TProtokoll1.Create; FProtokoll1.EmpfangVerarbeiten; end; end; procedure TProtokoll1.EmpfangVerarbeiten; begin wie auf das Eltern object Fahrzeug zugreifen um das property Fahrzeug.Kennzeichen zu setzen? end; |
AW: wie auf die properies vom Eltern Object zugreifen
TProtokoll1 und TProtokoll2 sind Property.
Diese sollten im Create der Klasse TFahrzeug erzeugt und im Destroy der Klasse TFahrzeug auch wieder freigegeben werden. Wenn du Daten von TFahrzeug im TProtokoll1 oder TProtokoll2 zur Verfügung haben möchtest, dann muss TFahrzeug diese an TProtokoll vorher übergeben. Holen geht nicht. Du könntest diese Daten in der Methode TProtokoll1.EmpfangVerarbeiten(FKennzeichen: string);, die du ja in TFahrzeug aufrufst, übergeben.
Delphi-Quellcode:
type
TProtokoll1 = class private FEigenesFeld: integer; procedure EmpfangVerarbeiten(Kennzeichen: string); end; type TProtokoll2 = class private FEigenesFeld: integer; procedure EmpfangVerarbeiten(Kennzeichen: string); end; type TFahrzeug = class private FKennzeichen: String; FProtokoll1: TProtokoll1; FProtokoll2: TProtokoll2; procedure EmpfangVerarbeiten; procedure SetKennzeichen(aKennzeichen:String); public property Kennzeichen: String read FKennzeichen write SetKennzeichen; end; procedure TFahrzeug.EmpfangVerarbeiten; begin if Data[1] = #1 then begin if not Assigned(FProtokoll1) then FProtokoll1 := TProtokoll1.Create; FProtokoll1.EmpfangVerarbeiten(FKennzeichen); end; end; procedure TProtokoll1.EmpfangVerarbeiten(Kennzeichen: string); begin Hier kann du jetzt auf Kennzeichen zugreifen end; |
AW: wie auf die properies vom Eltern Object zugreifen
TProtokoll1/2 müssen ein Feld: TFahrzeug besitzten, das wird beim Erstellen (eigener Contructor mit TFahrzeug-Parameter) oder kurz nach dem Erstellen von dessen Ersteller (Eltern) gesetzt/zugewiesen, also Self übergeben.
|
AW: wie auf die properies vom Eltern Object zugreifen
Gut, sowas kann man auch machen.
Aber ich habe es mir angewöhnt nur die Daten zu übergeben, die auch in der Funktion benötigt werden. Auch der Übersichtlichkeit wäre das dienlich. |
AW: wie auf die properies vom Eltern Object zugreifen
Zitat:
Gruß Kostas |
AW: wie auf die properies vom Eltern Object zugreifen
Zitat:
Dankeschön. Gruß Kostas |
AW: wie auf die properies vom Eltern Object zugreifen
Hallo himitsu,
ich habe die Fahrzeugklasse in einer Unit und die einzelnen Protokolle ebenfalls in separate Units. Jetzt muss ich im Interface Teil für Fahrzeuge und Protokolle die jeweils andere Unis per uses einbinden. Das funktioniert natürlich nicht. muss ich in diesem Fall die Fahrzeugklasse und die Protokoll Klassen in einer Unit zusammenführen oder gibt es doch eine elegantere Möglichkeit. Ich hätte sie gerne getrennt. Gruß Kostas |
AW: wie auf die properies vom Eltern Object zugreifen
Zitat:
zudem würde ich TProtokoll1/TProtokoll2, wenn diese in Fahrzeug an unterschiedlichen Stellen Verwendung finden, eher in eine TProtokollX (Namen sind Schall und Rauch und sollen nur zur Veranschaulichung dienen :-)) auslagern und dort dann entscheiden, welche konkrete TProtokoll du instanziieren musst. GRüße |
AW: wie auf die properies vom Eltern Object zugreifen
Zitat:
Ausnahmen: * Deine Klassen sind von TComponent abgeleitet und du verwendest dort beim Erstellen deine Überkomponente als Owner (was man da auch so machen sollte), dann kannst du auch den Owner nehmen, auf des gewünschten Typ casten und verwenden. (so mancher baut ein eigenes Property oder überschrteibt das Owner-Property und verwendet dort den Zieltypen) * und es gibt bei einigen Listentypen bereits en Feld/Property, in welchem die Owner-Komponente (die Liste) von Delphi gespeichert ist |
AW: wie auf die properies vom Eltern Object zugreifen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:17 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