Hello FPC, Tuesday, October 5, 2010, 1:10:43 PM, you wrote:
>> I do not have too much experience with components, but calling >> "Loaded" several times does not look very fine. MVC> To the best of my knowledge: it should be called once only, after the fixups. MVC> If it isn't so, this is a bug. Extracted from "reader.inc", comments below... ------------------------------------------------------ [...] procedure TReader.FixupReferences; var i: Integer; begin DoFixupReferences; GlobalFixupReferences; for i := 0 to FLoaded.Count - 1 do TComponent(FLoaded[I]).Loaded; end; [...] function TReader.ReadRootComponent(ARoot: TComponent): TComponent; [...] if Assigned(GlobalLoaded) then FLoaded := GlobalLoaded else FLoaded := TFpList.Create; try if FLoaded.IndexOf(FRoot) < 0 then FLoaded.Add(FRoot); FOwner := FRoot; FRoot.FComponentState := FRoot.FComponentState + [csLoading, csReading]; FRoot.ReadState(Self); Exclude(FRoot.FComponentState, csReading); if not Assigned(GlobalLoaded) then begin for i := 0 to FLoaded.Count - 1 do TComponent(FLoaded[i]).Loaded;//---------------------------- end; finally if not Assigned(GlobalLoaded) then FLoaded.Free; FLoaded := nil; end; GlobalFixupReferences; [...] end; procedure TReader.ReadData(Instance: TComponent); [...] { Fixup references if necessary (normally only if this is the root) } If (Instance=FRoot) then DoFixupReferences; end; [...] ------------------------------------------------------ As you can see the "Loaded" event is called (marked with some //-----) before calling "GlobalFixupReferences", I'll try to add some writeln's here and there to catch the event sequence and post it here for further comments. -- Best regards, José _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel