Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Zugriff auf gemeinsame Eigenschaft in unterschiedlichen Klassen

  Alt 10. Nov 2018, 12:27
Wenn ich auf einem der Einträge MessData1 stehe muss ich ja wieder zuerst durch die Liste um zu wissen zu wem die Liste gehört. Jetzt könnte ich natürlich MessData1 als ParentObject TMessData1List zuordnen, aber wie schon gesagt, kann es auch sein dass ich nicht eine Class finden will sondern eine darüber liegende Liste.
Ich sehe da jetzt nicht das Problem.
Du könntest in der Basisklasse eine Suchfunktion, die dann nach oben iteriert:

Delphi-Quellcode:
TBase = class
private
  FNr: Integer;
  FParentObject: TBase;
public
  function FoundParentClass(aClassName: String): TBase;
  function FoundParentItem(aItem: TBase): Boolen;
  property Nr: Integer read FNr write FNr;
  property ParentObject: TBase read FParentObject write FParentObject;
end;


function TBase.FoundParentClass(aClassName: String): TBase;
begin
  Result := nil;
  if Assigned(ParentObject) then
  begin
    if (ParentObject.ClassName = aClassName) then
      Exit(ParentObject);
    Result := ParentObject.FoundParentClass(aClassName);
  end;
end;

function TBase.FoundParentItem(aItem: TBase): Boolen;
begin
  Result := False;
  if Assigned(ParentObject) then
  begin
    if (ParentObject = aItem) then
      Exit(True);
    Result := ParentObject.FoundParentItem(aItem);
  end;
end;
So kannst Du dich von einer beliebigen Stelle aus weiter nach oben hangeln.
Ob die Listeneinträge die Liste als ihren Parent sehen sollen, musst Du abhängig von der Programmlogik entscheiden.

Auch dieses Konstrukt hat einen großen Nachteil. Was vorher so aussah
[DELPHI] lBaseSample := TBaseSample(FSamplingList[i]);
Das ist aber auch nicht mein Vorschlag.


Kannst Du mal ein Unit hochladen, in der diese Klassen vollständig enthalten sind?
Es bräuchte ja keine GUI vorhanden sein - nur eine kompilierbare Unit. Dann könnte man (ich?) die mal entsprechend umbauen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat