Index: VerpakkingsDefinitie/ApplicationContext.pas =================================================================== diff -u -r610 -r618 --- VerpakkingsDefinitie/ApplicationContext.pas (.../ApplicationContext.pas) (revision 610) +++ VerpakkingsDefinitie/ApplicationContext.pas (.../ApplicationContext.pas) (revision 618) @@ -257,6 +257,7 @@ procedure AddProductVerpakking(ProductVerpakking: TProductVerpakking); procedure VerwijderProductVerpakking(ProductVerpakking: TProductVerpakking); function GetDeelVanOpties(ProductVerpakking: TProductVerpakking): TReadOnlyList; + function GetDeelVan(DeelVanIdentificatie: string): TProductVerpakking; property GeselecteerdeVerpakking: TProductVerpakking read FGeselecteerdeVerpakking write SetGeselecteerdeVerpakking; property IsOK: boolean read FIsOK write FIsOK; @@ -471,8 +472,22 @@ procedure TProductVerpakkingenContext.VerwijderProductVerpakking(ProductVerpakking: TProductVerpakking); var + TempVerpakking: TProductVerpakking; I: Integer; begin + if ProductVerpakking = nil then + exit; + + // De andere objecten afgaan en we verwijderen elke 'Deel van' referentie + for TempVerpakking in FProductVerpakkingen do + begin + if (TempVerpakking.DeelVan <> nil) and TempVerpakking.DeelVan.Equals(ProductVerpakking) then + begin + TempVerpakking.DeelVan := nil; + TempVerpakking.DeelVanCaption := ''; + end; + end; + // We gaan matchen met equals, niet op de objectinstantie. // Zoeken I := 0; @@ -509,6 +524,21 @@ Result := TReadOnlyList.Create(ProductVerpakkingen); end; +function TProductVerpakkingenContext.GetDeelVan(DeelVanIdentificatie: string): TProductVerpakking; +var + TempVerpakking: TProductVerpakking; +begin + for TempVerpakking in FProductVerpakkingen do + begin + if DeelVanIdentificatie = TempVerpakking.GetDeelVanDisplay then + begin + Result := TempVerpakking; + exit; + end; + end; + Result := nil; +end; + // Product verpakking constructor TProductVerpakking.Create(); begin