Index: VerpakkingsDefinitie/UI/VerpakkingDetailScherm.pas =================================================================== diff -u -r603 -r604 --- VerpakkingsDefinitie/UI/VerpakkingDetailScherm.pas (.../VerpakkingDetailScherm.pas) (revision 603) +++ VerpakkingsDefinitie/UI/VerpakkingDetailScherm.pas (.../VerpakkingDetailScherm.pas) (revision 604) @@ -292,6 +292,8 @@ procedure TFormVerpakkingDetail.RegistreerWijzigingenVerpakking(ProductVerpakking: TProductVerpakking); var I: Integer; + ParameterControl: TCustomPanelVerpakkingParameter; + VerpakkingParameters: TList; begin // Linkerhelft @@ -340,6 +342,22 @@ // OptiType, geslecteerde tekst vertalen naar code en instellen. ProductVerpakking.OptiType := ApplicationContext.UiInstellingenContext.OptiTypesByValue [ComboBoxOptiType.Items[ComboBoxOptiType.ItemIndex]]; + + // Rechterhelft + + // Parameters. De controls in de scrollbox overlopen, op zoek naar TCustomPanelVerpakkingParameter. + // Eenmaal die gevonden forceren we het updaten van het object met de ingegeven waarde. + // Deze ge�pdate ProductVerpakkingParameter voegen we toe aan een temp lijst. + // Deze lijst registreren we bij de verpakking. + VerpakkingParameters := TList.Create(); + for I := 0 to ScrollBoxParameters.ControlCount - 1 do + if (ScrollBoxParameters.Controls[I] is TCustomPanelVerpakkingParameter) then + begin + ParameterControl := TCustomPanelVerpakkingParameter(ScrollBoxParameters.Controls[I]); + ParameterControl.Opslaan(); + VerpakkingParameters.Add(ParameterControl.ProductVerpakkingParameter); + end; + ProductVerpakking.SetParameters(VerpakkingParameters); end; procedure TFormVerpakkingDetail.UpdateControlsEnableStatus(); Index: VerpakkingsDefinitie/UI/CustomPanelVerpakkingParameter.pas =================================================================== diff -u -r598 -r604 --- VerpakkingsDefinitie/UI/CustomPanelVerpakkingParameter.pas (.../CustomPanelVerpakkingParameter.pas) (revision 598) +++ VerpakkingsDefinitie/UI/CustomPanelVerpakkingParameter.pas (.../CustomPanelVerpakkingParameter.pas) (revision 604) @@ -19,6 +19,7 @@ constructor Create(AOwner: TComponent); override; property ProductVerpakkingParameter: TProductVerpakkingParameter read FProductVerpakkingParameter write SetProductVerpakkingParameter; + procedure Opslaan(); end; implementation @@ -46,6 +47,7 @@ FEditControl.TextHint := Parameter.DefaultWaarde; FEditControl.Text := Parameter.Waarde; FEditControl.Hint := Parameter.ToolTip; + FProductVerpakkingParameter := Parameter; end; procedure TCustomPanelVerpakkingParameter.CreateControls(); @@ -72,4 +74,9 @@ end; end; +procedure TCustomPanelVerpakkingParameter.Opslaan(); +begin + FProductVerpakkingParameter.Waarde := FEditControl.Text; +end; + end. Index: VerpakkingsDefinitie/WS/ProductsAgent.pas =================================================================== diff -u -r603 -r604 --- VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 603) +++ VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 604) @@ -838,6 +838,7 @@ var i: Integer; DefaultDataObj: OptiServerService.pxBoxData; + TempParams: ArrayOfpxemDataParampxemDataParam; begin // Default data object casten. Dit uit klasse halen bespaart extra call. if ProductVerpakking.RawDefaultData = nil then @@ -889,22 +890,25 @@ PPSSubgroep := DefaultDataObj.PPSSubgroep; PPSOutput := DefaultDataObj.PPSOutput; - // Verpakking parameters kopi�ren uit default data en enkel de waarde aanpassen indien nodig - // We gaan er van uit dat de volgorde dezelfde is. - if ProductVerpakking.Parameters.Count - 1 = High(Params) then - // Aantal parameters komt overeen - for i := 0 to High(Params) do - begin - // Andere velden overnemen - Params[i].ID := ProductVerpakking.Parameters[i].ID; - Params[i].ProgLabel := ProductVerpakking.Parameters[i].ProgLabel; - Params[i].ToolTip := ProductVerpakking.Parameters[i].ToolTip; + // Parameters jusit zetten en terugvallen op default waarde indien nodig. + SetLength(TempParams, ProductVerpakking.Parameters.Count); + for i := 0 to high(TempParams) - 1 do + begin + // Andere velden overnemen + TempParams[i] := pxemDataParam.Create(); + TempParams[i].ID := ProductVerpakking.Parameters[i].ID; + TempParams[i].ProgLabel := ProductVerpakking.Parameters[i].ProgLabel; + TempParams[i].ToolTip := ProductVerpakking.Parameters[i].ToolTip; - // Enkel waarde invullen als deze aanwezig is en verschilt van default waarde. - if (ProductVerpakking.Parameters[i].Waarde <> '') and - (ProductVerpakking.Parameters[i].Waarde <> ProductVerpakking.Parameters[i].DefaultWaarde) then - Params[i].Waarde := ProductVerpakking.Parameters[i].Waarde; - end; + // Enkel waarde invullen als deze aanwezig is en verschilt van default waarde. + if (ProductVerpakking.Parameters[i].Waarde <> '') and + (ProductVerpakking.Parameters[i].Waarde <> ProductVerpakking.Parameters[i].DefaultWaarde) then + TempParams[i].Waarde := ProductVerpakking.Parameters[i].Waarde + else + // Waarde is dezelfde als default, leegmaken. + TempParams[i].Waarde := ''; + end; + Params := TempParams; end; end;