Choices with nested compositors (sequences or choices) are now recognized as choices

This commit is contained in:
Dietmar Schölzel 2022-06-10 15:20:22 +02:00
parent d86bfbb276
commit eca77e1246
1 changed files with 14 additions and 4 deletions

View File

@ -790,13 +790,23 @@ end;
function TXMLDataBindingGenerator.IsChoice(AElement: IXMLElementDef): Boolean;
var
compositor: IXMLElementCompositor;
parent: IXMLNode;
begin
Result := False;
if Supports(AElement.ParentNode, IXMLElementCompositor, compositor) then
Result := (compositor.CompositorType = ctChoice) and
(compositor.ElementDefs.Count > 1);
parent := AElement.ParentNode;
while Supports(parent, IXMLElementCompositor, compositor) do
begin
if compositor.CompositorType = ctSequence then
begin
parent := compositor.ParentNode;
end else
begin
Result := (compositor.CompositorType = ctChoice) and
(compositor.ElementDefs.Count + compositor.Compositors.Count > 1);
Exit;
end;
end;
end;