Browse Source

* Set children length to zero after clearing

michael 5 years ago
parent
commit
b83a5f1fd5
1 changed files with 17 additions and 14 deletions
  1. 17 14
      packages/webwidget/webwidget.pas

+ 17 - 14
packages/webwidget/webwidget.pas

@@ -976,6 +976,7 @@ ResourceString
    SErrUnknownTemplateGroup = 'Unknown template group item: "%s"';
    SErrDuplicateTemplateGroup = 'Duplicate template group item: "%s"';
    SErrNoGroupInNonGroupTemplate = 'Group name can only be used group value template';
+
 { TSimpleLoopTemplateGroup }
 
 procedure TSimpleLoopTemplateGroup.SetGroupValueTemplate(AValue: String);
@@ -1085,9 +1086,6 @@ begin
     inherited Assign(Source);
 end;
 
-{ TLoopTemplateValue }
-
-
 { TListLoopTemplateWidget.TPropListLoopEnumerator }
 
 function TListLoopTemplateWidget.TPropListLoopEnumerator.GetValue(const aName: String): String;
@@ -1217,19 +1215,12 @@ begin
   FList:=aValue;
 end;
 
-Type
-  THackList = class(TList)
-  Public
-    Property List;
-  end;
 
 function TListLoopTemplateWidget.GetArray: TJSArray;
 
 Var
   I : integer;
   C : TCollection;
-  FL : TFPList;
-
 begin
   Case FListKind of
     lkCollection :
@@ -1357,7 +1348,7 @@ end;
 procedure TCustomLoopTemplateWidget.SetGroups(AValue: TLoopTemplateGroupList);
 begin
   if FGroups=AValue then Exit;
-  FGroups:=AValue;
+  FGroups.Assign(AValue);
   if IsRendered then
     Refresh;
 end;
@@ -1379,7 +1370,7 @@ end;
 function TCustomLoopTemplateWidget.RenderGroupHeaders(aEnum : TLoopEnumerator) : String;
 
 Var
-  GrpIdx,J : Integer;
+  GrpIdx: Integer;
   grp : TLoopTemplateGroup;
   StartGroups : Boolean;
   S,V : String;
@@ -1457,6 +1448,7 @@ end;
 
 destructor TCustomLoopTemplateWidget.Destroy;
 begin
+  FreeAndNil(FGroups);
   inherited Destroy;
 end;
 
@@ -2174,17 +2166,23 @@ procedure TCustomWebWidget.InvalidateParentElement;
 
 Var
   I : Integer;
+  C : TCustomWebWidget;
 
 begin
   FParentElement:=nil;
   For I:=0 to ChildCount-1 do
-    Children[i].InvalidateParentElement;
+    begin
+    C:=Children[i];
+    if Assigned(C) then // Can be Nil
+      C.InvalidateParentElement;
+    end;
 end;
 
 procedure TCustomWebWidget.InvalidateElement;
 
 Var
   I : Integer;
+  C : TCustomWebWidget;
 
 begin
   If FStyles.Count>0 then
@@ -2193,7 +2191,11 @@ begin
     FReferences.FRefs:=Nil;
   FElement:=nil;
   For I:=0 to ChildCount-1 do
-    Children[i].InvalidateElement;
+    begin
+    C:=Children[i];
+    if Assigned(C) then // Can be Nil
+      C.InvalidateElement;
+    end;
 end;
 
 function TCustomWebWidget.WidgetClasses: String;
@@ -2899,6 +2901,7 @@ begin
     FChildren[i]:=Nil;
     C.Free;
     end;
+  FChildren.Length:=0;
   Parent:=Nil;
   ParentID:='';
   FChildren:=Nil;