Hi Graeme,

I don't have any quick fix but have a possible solution requiring changes to
TtiVisited:

TtiVisited = class(TtiBaseObject)
protected
  // add:
  CanVisitCandidate(const APropName: string; const ACandidate: TtiVisited):
boolean; virtual;
end;

TtiVisited.CanVisitCandidate(const APropName: string; const ACandidate:
TtiVisited): boolean;
begin
   // Override in descendant to selectively allow visitor recursion
  result := true;
end;

procedure TtiVisited.IterateRecurse(...);
// change:
        if (LCandidate is TtiVisited) then
// to:
        if (LCandidate is TtiVisited) and
           (CanVisitCandidate(LClassPropNames.Strings[i], LCandidate as
TtiVisited)) then
TLearner = class(TtiObject)
protected
   CanVisitCandidate(const APropName: string; const ACandidate: TtiVisited):
boolean; override;
end;

 TLearner.CanVisitCandidate(const APropName: string; const ACandidate:
TtiVisited): boolean;
begin
  result := (inherited CanVisitCandidate(APropName, ACandidate)) and
      (APropName <> 'BillingAddress');
      // or:
      // (not (ACandidate is TAddress));
end;

Regards,
Jarrod Hollingworth
------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
tiOPF-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tiopf-talk

Reply via email to