Index: VerpakkingsDefinitie/ApplicationContext.pas =================================================================== diff -u -r599 -r600 --- VerpakkingsDefinitie/ApplicationContext.pas (.../ApplicationContext.pas) (revision 599) +++ VerpakkingsDefinitie/ApplicationContext.pas (.../ApplicationContext.pas) (revision 600) @@ -237,6 +237,7 @@ property ProductVerpakkingen: TReadOnlyList read GetProductVerpakkingenLijst; procedure SetProductVerpakkingen(Collection: TEnumerable); procedure AddProductVerpakking(ProductVerpakking: TProductVerpakking); + procedure VerwijderProductVerpakking(ProductVerpakking: TProductVerpakking); function GetDeelVanOpties(ProductVerpakking: TProductVerpakking): TList; property GeselecteerdeVerpakking: TProductVerpakking read FGeselecteerdeVerpakking write SetGeselecteerdeVerpakking; @@ -410,6 +411,27 @@ self.NotifyChanged(); end; +procedure TProductVerpakkingenContext.VerwijderProductVerpakking(ProductVerpakking: TProductVerpakking); +var + I: Integer; +begin + // We gaan matchen met equals, niet op de objectinstantie. + // Zoeken + I := 0; + while (I < FProductVerpakkingen.Count) and (not FProductVerpakkingen[I].Equals(ProductVerpakking)) do + I := I + 1; + // Wissen + if I < FProductVerpakkingen.Count then + begin + FProductVerpakkingen.Delete(I); + // Als dit product gelijk was aan het geselecteerde product, geselecteerde product leegmaken. + if ProductVerpakking.Equals(FGeselecteerdeVerpakking) then + FreeAndNil(FGeselecteerdeVerpakking); + end; + + self.NotifyChanged(); +end; + procedure TProductVerpakkingenContext.SetGeselecteerdeVerpakking(ProductVerpakking: TProductVerpakking); begin FGeselecteerdeVerpakking := ProductVerpakking;