AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein wie auf die properies vom Eltern Object zugreifen

wie auf die properies vom Eltern Object zugreifen

Ein Thema von Kostas · begonnen am 12. Sep 2018 · letzter Beitrag vom 13. Sep 2018
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

wie auf die properies vom Eltern Object zugreifen

  Alt 12. Sep 2018, 16:44
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:
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;
Gruß Kostas
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
928 Beiträge
 
#2

AW: wie auf die properies vom Eltern Object zugreifen

  Alt 12. Sep 2018, 16:50
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;
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (12. Sep 2018 um 16:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#3

AW: wie auf die properies vom Eltern Object zugreifen

  Alt 12. Sep 2018, 16:51
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
928 Beiträge
 
#4

AW: wie auf die properies vom Eltern Object zugreifen

  Alt 12. Sep 2018, 16:56
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.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: wie auf die properies vom Eltern Object zugreifen

  Alt 12. Sep 2018, 16:58
TProtokoll1 und TProtokoll2 sind Property.
Diese sollten im Create der Klasse TFahrzeug erzeugt und im Destroy der Klasse TFahrzeug auch wieder freigegeben werden.
Könnte ich schon machen, aber es ist nicht sicher ob TProtokoll1 und TProtokoll2 oder beide benötigt werden. Deshalb dachte ich, ich erzeuge sie dynamisch und muss beim Destroy von TFahrzeug natürlich prüfen ob es assignet wurde. Oder gibt es einen Grund warum ich immer beide erzeugen sollte?

Gruß Kostas
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: wie auf die properies vom Eltern Object zugreifen

  Alt 12. Sep 2018, 17:00
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.
Perfekt, genau das habe ich übersehen.

Dankeschön.

Gruß Kostas
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: wie auf die properies vom Eltern Object zugreifen

  Alt 12. Sep 2018, 17:11
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
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.364 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: wie auf die properies vom Eltern Object zugreifen

  Alt 12. Sep 2018, 17:25
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.
aus dem Grund würde ich das nicht machen. Übergebe TProtokoll lieber ein Event, das die jeweilige Instanz feuern kann und das neue Kennzeichen (oder whatever) an die Elternklasse übergeben kann, dann sind die "unabhängig" voneinander.

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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#9

AW: wie auf die properies vom Eltern Object zugreifen

  Alt 12. Sep 2018, 19:56
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.
Und nun rate mal, was du für deine gewünschte Funktion benötigst.

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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
928 Beiträge
 
#10

AW: wie auf die properies vom Eltern Object zugreifen

  Alt 13. Sep 2018, 07:54
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.
Und nun rate mal, was du für deine gewünschte Funktion benötigst.
Hm...ausgehend vom ersten Post....nur das Kennzeichen.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:42 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