Index: VerpakkingsDefinitie/UI/VerpakkingDetailScherm.pas =================================================================== diff -u -r598 -r602 --- VerpakkingsDefinitie/UI/VerpakkingDetailScherm.pas (.../VerpakkingDetailScherm.pas) (revision 598) +++ VerpakkingsDefinitie/UI/VerpakkingDetailScherm.pas (.../VerpakkingDetailScherm.pas) (revision 602) @@ -7,6 +7,7 @@ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.ComCtrls, Vcl.CheckLst, System.Generics.Collections, Subscherm, Navigator, + ProductsAgent, ApplicationContext, ObserverPattern, CheckCombo; @@ -45,9 +46,13 @@ EditVolumeVan: TEdit; ComboBoxOptiType: TComboBox; ScrollBoxParameters: TScrollBox; + ButtonOpslaan: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); + procedure ButtonOpslaanClick(Sender: TObject); private + FProductsAgent: TProductsAgent; + FProductVerpakkingSubject: TSubject; FProductVerpakkingSubjectObserver: TSubjectObserver; @@ -59,14 +64,15 @@ procedure LaadCheckedComboBoxen(); procedure UpdateGui(Sender: TObject); procedure ToonProductVerpakking(ProductVerpakking: TProductVerpakking); + procedure RegistreerWijzigingenVerpakking(ProductVerpakking: TProductVerpakking); procedure UpdateControlsEnableStatus(); procedure LaadEnSelecteerWaardenComboBox(Waarden: TDictionary; ComboBox: TComboBox; GeselecteerdeWaarde: string; DefaultGeselecteerdeWaarde: string; Vertaling: TDictionary); procedure LaadEnSelecteerWaardenCheckComboBox(Waarden: TDictionary; CheckedComboBox: TCheckedComboBox; GeselecteerdeWaarden: TList; DefaultGeselecteerdeWaarden: TList; Vertaling: TDictionary); public Constructor Create(AOwner: TComponent; Navigator: INavigator; ApplicationContext: TApplicationContext; - ProductVerpakkingSubject: TSubject); + ProductsAgent: TProductsAgent; ProductVerpakkingSubject: TSubject); end; implementation @@ -76,9 +82,10 @@ uses Util, System.StrUtils, CustomPanelVerpakkingParameter; Constructor TFormVerpakkingDetail.Create(AOwner: TComponent; Navigator: INavigator; ApplicationContext: TApplicationContext; - ProductVerpakkingSubject: TSubject); + ProductsAgent: TProductsAgent; ProductVerpakkingSubject: TSubject); begin inherited Create(AOwner, Navigator, ApplicationContext); + FProductsAgent := ProductsAgent; // Observer self.FProductVerpakkingSubject := ProductVerpakkingSubject; self.FProductVerpakkingSubjectObserver := TSubjectObserver.Create(self); @@ -113,6 +120,30 @@ TUtil.VervangControl(ComboBoxRichting, CheckComboBoxRichting); end; +procedure TFormVerpakkingDetail.ButtonOpslaanClick(Sender: TObject); +var + ErrorMessage: string; +begin + // Wijzigingen van GUI overbrengen naar instantie + RegistreerWijzigingenVerpakking(ApplicationContext.ProductVerpakkingContext.GeselecteerdeVerpakking); + + // Wijzigingen opslaan + FProductsAgent.OpslaanGewijzigdeProductVerpakking(ApplicationContext.ProductVerpakkingContext.GeselecteerdeVerpakking, + ApplicationContext.UserContext, ApplicationContext.ProductVerpakkingContext); + + begin + if self.ApplicationContext.ProductVerpakkingContext.IsOK = false then + begin + // Opzoeking gefaald + ErrorMessage := self.ApplicationContext.ProductVerpakkingContext.ErrorMessage; + if self.ApplicationContext.ProductVerpakkingContext.InternalErrorMessage <> '' then + ErrorMessage := ErrorMessage + sLineBreak + self.ApplicationContext.ProductVerpakkingContext.InternalErrorMessage; + + MessageDlg(ErrorMessage, TMsgDlgType.mtInformation, [mbOK], 0, mbCancel); + end; + end; +end; + procedure TFormVerpakkingDetail.UpdateGui(Sender: TObject); begin // Toon de geselecteerde verpakking @@ -182,7 +213,7 @@ procedure TFormVerpakkingDetail.ToonProductVerpakking(ProductVerpakking: TProductVerpakking); var - Item: string; + TempProductVerpakking: TProductVerpakking; Parameter: TProductVerpakkingParameter; NieuweParameterControl: TCustomPanelVerpakkingParameter; begin @@ -194,10 +225,8 @@ // DeelVan ComboBoxDeelVan.Items.Clear(); // ComboBox vullen en item selecteren. - for Item in ApplicationContext.ProductVerpakkingContext.GetDeelVanOpties(ProductVerpakking) do - begin - ComboBoxDeelVan.Items.Add(Item); - end; + for TempProductVerpakking in ApplicationContext.ProductVerpakkingContext.GetDeelVanOpties(ProductVerpakking) do + ComboBoxDeelVan.Items.Add(TempProductVerpakking.DeelVanDisplay); ComboBoxDeelVan.Items.Add(NERGENS_DEEL_VAN_CAPTION); // Item selecteren if ProductVerpakking.DeelVan <> nil then @@ -260,6 +289,32 @@ end; end; +procedure TFormVerpakkingDetail.RegistreerWijzigingenVerpakking(ProductVerpakking: TProductVerpakking); +begin + // Linkerhelft + + // DeelVan + // Kijken waar geselecteerde index ligt. Indien het een geldige selectie is, object selecteren. + if (ComboBoxDeelVan.ItemIndex > 0) and (ComboBoxDeelVan.ItemIndex < ComboBoxDeelVan.Items.Count - 1) then + ProductVerpakking.DeelVan := ApplicationContext.ProductVerpakkingContext.ProductVerpakkingen[ComboBoxDeelVan.ItemIndex] + else + // Geen 'deel van' geselecteerd. + ProductVerpakking.DeelVan := nil; + + // Breedte, Diepte, Hoogte. + ProductVerpakking.Breedte := EditBreedte.Text; + ProductVerpakking.Diepte := EditDiepte.Text; + ProductVerpakking.Hoogte := EditHoogte.Text; + + // Max.Comb.Aantal + ProductVerpakking.MaxCombinAantal := EditMaxCombAantal.Text; + + // Aantal + ProductVerpakking.Aantal := EditAantal.Text; + + { TODO : Andere properties opslaan } +end; + procedure TFormVerpakkingDetail.UpdateControlsEnableStatus(); begin EditMeta.Enabled := false;