@xZise: ...ich speicher den Tag der markierten TPerson in einer Integer-Variable innerhalb von TStammbaum, jedoch muss ich ja dennoch alle anderen TPersons durchlaufen lassen, um deren Markiert auf False zu setzen, oder?[...]
Ich sehe gerade TPerson muss das wissen, um sich zu zeichnen. Aber dennoch musst du nicht alle durchlaufen. Du weißt ja wer markiert war.
Delphi-Quellcode:
type
TStammBaum = class
private
FMarkiert : TPerson; // Statt Integer, so muss man nicht mehr rechnen.
procedure SetMarkiert(const APerson : TPerson);
public
property Markiert : TPerson read FMarkiert write SetMarkiert;
end;
procedure TStammBaum.SetMarkiert(const APerson : TPerson);
begin
if Assigned(FMarkiert) then
FMarkiert.Markiert := False;
FMarkiert := APerson;
end;
Alternativ könnte die Person den Stammbaum auch fragen ob es markiert ist (z.B. mithilfe eines Events) aber ich denke diese Lösungs ist wohl besser.
MfG
Fabian