Index: VerpakkingsDefinitie/WS/ProductsAgent.pas =================================================================== diff -u -r594 -r595 --- VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 594) +++ VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 595) @@ -30,8 +30,8 @@ pxBoxDataObj: OptiServerService.pxBoxData); overload; procedure RegistreerMislukteOpzoeking(ProductDetailContext: TProductVerpakkingenContext; pxStatusObj: OptiServerService.pxStatus); overload; - function GetBoxDataIDsViaProduct(ProductNr: Integer; UserContext: TUserContext; ProductDetailContext: TProductVerpakkingenContext) - : TList; + function GetBoxDataIDsViaProduct(ProductNr: Integer; UserContext: TUserContext; + ProductDetailContext: TProductVerpakkingenContext): TList; public Constructor Create(); procedure LaadUIInstellingen(UserContext: TUserContext; UiInstellingenContext: TUiInstellingenContext); @@ -268,19 +268,19 @@ Lijnen: TStringList; LijnenProduct: TStringList; XMLDoc: IXMLDocument; + NieuweProducten: TList; NieuwProduct: TProductInformatie; begin // Andere velden juist zetten ProductsContext.IsOK := True; ProductsContext.ErrorMessage := ''; ProductsContext.InternalErrorMessage := ''; - ProductsContext.Producten.Clear(); - - // Producten inladen - LijnenProduct := TStringList.Create; - Lijnen := GeefBruikbareLijnenUitXMLDataSet(DataSet); try + // Producten inladen + LijnenProduct := TStringList.Create; + Lijnen := GeefBruikbareLijnenUitXMLDataSet(DataSet); + NieuweProducten := TList.Create(); // De 'Select' elementen overlopen en elk element mappen naar een property van een instantie. // Deze instantie toevoegen aan de lijst. for Lijn in Lijnen do @@ -299,13 +299,16 @@ XMLDoc := LoadXMLData(TempStr); // XML document van maken // Elementen uit XML laden, toewijzen en instantie toevoegen aan lijst. NieuwProduct := TProductInformatie.Create(); - NieuwProduct.ProductNr := XMLDoc.DocumentElement.ChildValues['ProductNr']; - NieuwProduct.Tekst := XMLDoc.DocumentElement.ChildValues['Tekst']; - NieuwProduct.Kol1 := XMLDoc.DocumentElement.ChildValues['Kol1']; - NieuwProduct.Kol2 := XMLDoc.DocumentElement.ChildValues['Kol2']; - NieuwProduct.Kol3 := XMLDoc.DocumentElement.ChildValues['Kol3']; - NieuwProduct.Kol4 := XMLDoc.DocumentElement.ChildValues['Kol4']; - ProductsContext.Producten.Add(NieuwProduct); + with NieuwProduct do + begin + ProductNr := XMLDoc.DocumentElement.ChildValues['ProductNr']; + Tekst := XMLDoc.DocumentElement.ChildValues['Tekst']; + Kol1 := XMLDoc.DocumentElement.ChildValues['Kol1']; + Kol2 := XMLDoc.DocumentElement.ChildValues['Kol2']; + Kol3 := XMLDoc.DocumentElement.ChildValues['Kol3']; + Kol4 := XMLDoc.DocumentElement.ChildValues['Kol4']; + end; + NieuweProducten.Add(NieuwProduct); // klaarzetten voor (mogelijks) volgend product LijnenProduct.Clear(); @@ -315,18 +318,20 @@ // Standaard productlijnen toevoegen LijnenProduct.Add(Lijn); end; + // Opgehaalde producten registreren + ProductsContext.Reset(false); + ProductsContext.SetProducten(NieuweProducten); finally - Lijnen.Free(); - LijnenProduct.Free(); + FreeAndNil(Lijnen); + FreeAndNil(LijnenProduct); + FreeAndNil(NieuweProducten); end; - - ProductsContext.NotifyChanged(); end; procedure TProductsAgent.RegistreerMislukteOpzoeking(ProductsContext: TProductsContext; pxStatusObj: SelectService.pxStatus); begin // Ander velden leegmaken - ProductsContext.Producten.Clear(); + ProductsContext.Reset(); ProductsContext.IsOK := pxStatusObj.IsOK; ProductsContext.ErrorMessage := pxStatusObj.Message_;