function DoNodeVisit(Node: IGMTreeable): Boolean; begin Result := True; while (Node <> nil) and Result do begin Result := AVisitFunc(Node, AParameter); if ARecurse and Result then Result := DoNodeVisit(Node.FirstChild); Node := Node.NextSibling; end; end;