![]() |
AW: Zugriff auf gemeinsame Eigenschaft in unterschiedlichen Klassen
Zitat:
Problem: 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. Oder sehe ich was nicht? Grüße Gerd |
AW: Zugriff auf gemeinsame Eigenschaft in unterschiedlichen Klassen
Zitat:
Delphi-Quellcode:
sieht jetzt so aus:
var
lBaseSample: TBaseSample; begin Result := false; for lBaseSample in FSamplingList do if (lBaseSample.StatusSample <> assFilled) and (lBaseSample.StatusSample <> assProcessed) then exit; Result := true; end;
Delphi-Quellcode:
Was mich am meisten daran stört ist dass ich jetzt überall ein Typwandlung
var
i: Integer; lBaseSample: TBaseSample; begin Result := true; for i := 0 to Pred(FSamplingList.count) do begin lBaseSample := TBaseSample(FSamplingList[i]); if (lBaseSample.StatusSample <> assFilled) and (lBaseSample.StatusSample <> assProcessed) then exit; end; Result := true; end;
Delphi-Quellcode:
statt
lBaseSample := TBaseSample(FSamplingList[i]);
Delphi-Quellcode:
machen muss.
lBaseSample := FSamplingList[i];
Jetzt wäre ich doch froh, wenn mir noch mal einer einen Tipp geben könnte Grüße Gerd |
AW: Zugriff auf gemeinsame Eigenschaft in unterschiedlichen Klassen
Zitat:
Du könntest in der Basisklasse eine Suchfunktion, die dann nach oben iteriert:
Delphi-Quellcode:
So kannst Du dich von einer beliebigen Stelle aus weiter nach oben hangeln.
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; Ob die Listeneinträge die Liste als ihren Parent sehen sollen, musst Du abhängig von der Programmlogik entscheiden. Zitat:
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. |
AW: Zugriff auf gemeinsame Eigenschaft in unterschiedlichen Klassen
Hallo Stahli,
zuerst mal Danke für deine Unetrstützung. Zitat:
Zitat:
Zitat:
Ich hatte noch folgenden Ansatz:
Delphi-Quellcode:
Der code
TMyObjectList<T> = class(TObjectList<T>)
private FParentObject: TBase; public property ParentObject: Integer read FParentObject write FParentObject; end; TBaseList = class(TMyObjectList<TBase>); // Und die Suche nach einer bestimmten Klasse, z.B. TAnalysis lObject := ParentObject; repeat if lObject is TAnalysis then // gefunden Result := TAnalysis(lObject) else if ParentObject is TBase then // Wenn TBase eine Klasse höher lObject := TBase(lObject).ParentObject else if ParentObject is TBaseList then // Wenn Liste eine Klasse höhr lObject := TBaseList(lObject).ParentObject else lObject := nil; until (Result <> nil) or (lObject = nil);
Delphi-Quellcode:
funktioniert aber nicht nicht. Geht das irgendwie?
else if ParentObject is TBaseList then
lObject := TBaseList(lObject).ParentObject |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:27 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