Index: VerpakkingsDefinitie/ApplicationContext.pas =================================================================== diff -u -r597 -r598 --- VerpakkingsDefinitie/ApplicationContext.pas (.../ApplicationContext.pas) (revision 597) +++ VerpakkingsDefinitie/ApplicationContext.pas (.../ApplicationContext.pas) (revision 598) @@ -135,12 +135,12 @@ FCutOrder: Integer; FVolumeVanCaption: string; - FBreedte: Integer; - FDefaultBreedte: Integer; - FDiepte: Integer; - FDefaultDiepte: Integer; - FHoogte: Integer; - FDefaultHoogte: Integer; + FBreedte: string; + FDefaultBreedte: string; + FDiepte: string; + FDefaultDiepte: string; + FHoogte: string; + FDefaultHoogte: string; FAantal: string; FMaxCombinAantal: string; FPlaatsing: string; @@ -162,19 +162,26 @@ FMetaCaption: string; function GetMetaCaptionDisplay(): string; + function GetBreedteDisplay: string; + function GetDiepteDisplay: string; + function GetHoogteDisplay: string; + function GetParametersLijst: TReadOnlyList; public property RawData: TObject read FRawData write FRawData; property ID: string read FID write FID; property CutOrder: Integer read FCutOrder write FCutOrder; property VolumeVanCaption: string read FVolumeVanCaption write FVolumeVanCaption; - property Breedte: Integer read FBreedte write FBreedte; - property DefaultBreedte: Integer read FDefaultBreedte write FDefaultBreedte; - property Diepte: Integer read FDiepte write FDiepte; - property DefaultDiepte: Integer read FDefaultDiepte write FDefaultDiepte; - property Hoogte: Integer read FHoogte write FHoogte; - property DefaultHoogte: Integer read FDefaultHoogte write FDefaultHoogte; + property BreedteDisplay: string read GetBreedteDisplay; + property Breedte: string read FBreedte write FBreedte; + property DefaultBreedte: string read FDefaultBreedte write FDefaultBreedte; + property DiepteDisplay: string read GetDiepteDisplay; + property Diepte: string read FDiepte write FDiepte; + property DefaultDiepte: string read FDefaultDiepte write FDefaultDiepte; + property HoogteDisplay: string read GetHoogteDisplay; + property Hoogte: string read FHoogte write FHoogte; + property DefaultHoogte: string read FDefaultHoogte write FDefaultHoogte; property Aantal: string read FAantal write FAantal; property MaxCombinAantal: string read FMaxCombinAantal write FMaxCombinAantal; property Plaatsing: string read FPlaatsing write FPlaatsing; @@ -187,8 +194,8 @@ property Richtingen: TList read FRichtingen; property DefaultRichtingen: TList read FDefaultRichtingen; - property Parameters: TList read FParameters; - { TODO : Immutable list } + property Parameters: TReadOnlyList read GetParametersLijst; + procedure SetParameters(Collection: TEnumerable); property DeelVanID: string read FDeelVanID write FDeelVanID; property DeelVanCaption: string read FDeelVanCaption write FDeelVanCaption; @@ -447,6 +454,47 @@ Result := ''; end; +function TProductVerpakking.GetBreedteDisplay: string; +begin + if FBreedte <> '' then + Result := FBreedte + else if FDefaultBreedte <> '' then + Result := FDefaultBreedte + else + Result := '0'; +end; + +function TProductVerpakking.GetDiepteDisplay: string; +begin + if FDiepte <> '' then + Result := FDiepte + else if FDefaultDiepte <> '' then + Result := FDefaultDiepte + else + Result := '0'; +end; + +function TProductVerpakking.GetHoogteDisplay: string; +begin + if FHoogte <> '' then + Result := FHoogte + else if FDefaultHoogte <> '' then + Result := FDefaultHoogte + else + Result := '0'; +end; + +function TProductVerpakking.GetParametersLijst: TReadOnlyList; +begin + Result := TReadOnlyList.Create(FParameters); +end; + +procedure TProductVerpakking.SetParameters(Collection: TEnumerable); +begin + FParameters.Clear(); + FParameters.AddRange(Collection); +end; + // APPLICATION CONTEXT constructor TApplicationContext.Create(); begin Index: VerpakkingsDefinitie/UI/Util.pas =================================================================== diff -u -r593 -r598 --- VerpakkingsDefinitie/UI/Util.pas (.../Util.pas) (revision 593) +++ VerpakkingsDefinitie/UI/Util.pas (.../Util.pas) (revision 598) @@ -4,6 +4,7 @@ uses Vcl.ExtCtrls, // Control op grid + Vcl.StdCtrls, // Label over scherm tonen Vcl.Controls, System.SysUtils, // Free control children System.Types, Vcl.Graphics; // Color lightener @@ -12,6 +13,7 @@ class procedure VervangControl(OudeControl: TControl; NieuweControl: TControl); class procedure PlaatsControlOpGrid(Grid: TGridPanel; Control: TControl; RowI: Integer; ColI: Integer; RowSpan: Integer = 1; ColSpan: Integer = 1); + class procedure ToonLabelOverScherm(Scherm: TWinControl; var LabelControl: TLabel; Boodschap: string; Aanwezig: Boolean); class procedure FreeControlChildren(AControl: TControl); class function LightenColor(RGB: Cardinal; Percentage: Integer): Cardinal; static; end; @@ -57,6 +59,50 @@ Grid.ControlCollection[index].ColumnSpan := ColSpan; end; +// TOON LABEL OP SCHERM +class procedure TUtil.ToonLabelOverScherm(Scherm: TWinControl; var LabelControl: TLabel; Boodschap: string; Aanwezig: Boolean); +var + I: Integer; +begin + if Aanwezig then + begin + // Skip update als alles al zichtbaar staat. + if Assigned(LabelControl) = False then + exit; + + LabelControl.visible := False; + FreeAndNil(LabelControl); + + // Wel resultaten, toon alles. + for I := 0 to Scherm.ControlCount - 1 do + if Assigned(Scherm.Controls[I]) then + Scherm.Controls[I].visible := True; + end + else + begin + // Skip update als melding al getoond wordt en alles onzichtbaar staat. + if Assigned(LabelControl) then + exit; + + // Geen resultaten, verberg kinderen, toon melding (label) en stop. + for I := 0 to Scherm.ControlCount - 1 do + if Assigned(Scherm.Controls[I]) then + Scherm.Controls[I].visible := False; + // Label tonen + LabelControl := TLabel.Create(Scherm); + with LabelControl do + begin + parent := Scherm; + Caption := Boodschap; + Font.Size := 15; + // Centreren: https://stackoverflow.com/questions/18545937/make-a-component-appear-in-the-middle-of-form-no-matter-what-screen-resolution + Left := (Scherm.Width - Width) div 2; + Top := (Scherm.Height - Height) div 2; + Anchors := []; // Relatief tegenover parent + end; + end +end; + // FREE CONTROL CHILDREN // Recursieve methode om de kinderen van een TWinControl te free-en (hanging pointers voorkomen) // Gebaseerd op: https://stackoverflow.com/questions/414928/is-there-any-way-to-get-all-the-controls-on-a-container-control Index: VerpakkingsDefinitie/WS/ProductsAgent.pas =================================================================== diff -u -r597 -r598 --- VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 597) +++ VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 598) @@ -467,6 +467,7 @@ ZoekData: OptiServerService.GetBoxDataViaId; GetBoxDataViaIDResponseObj: GetBoxDataViaIDResponse; TempProductVerpakkingen: TList; + TempNieuweVerpakkingParameters: TList; pxBoxDataObj: OptiServerService.pxBoxData; Verpakking: TProductVerpakking; @@ -475,6 +476,7 @@ begin try TempProductVerpakkingen := TList.Create(); + TempNieuweVerpakkingParameters := TList.Create(); for BoxDataID in VerpakkingIDs do begin @@ -513,9 +515,9 @@ VolumeVanCaption := pxBoxDataObj.VolumeVanCaption; ID := pxBoxDataObj.ID; CutOrder := pxBoxDataObj.CutOrder; - Breedte := StrToInt(ifthen(pxBoxDataObj.Breedte <> '', pxBoxDataObj.Breedte, '0')); - Diepte := StrToInt(ifthen(pxBoxDataObj.Diepte <> '', pxBoxDataObj.Diepte, '0')); - Hoogte := StrToInt(ifthen(pxBoxDataObj.Hoogte <> '', pxBoxDataObj.Hoogte, '0')); + Breedte := pxBoxDataObj.Breedte; + Diepte := pxBoxDataObj.Diepte; + Hoogte := pxBoxDataObj.Hoogte; Aantal := pxBoxDataObj.Aantal; MaxCombinAantal := pxBoxDataObj.MaxCombinAantal; Plaatsing := pxBoxDataObj.Plaatsing; @@ -527,9 +529,9 @@ // Default data instellen als deze aanwezig is. if pxBoxDataObj.DefaultData <> nil then begin - DefaultBreedte := StrToInt(ifthen(pxBoxDataObj.DefaultData.Breedte <> '', pxBoxDataObj.DefaultData.Breedte, '0')); - DefaultDiepte := StrToInt(ifthen(pxBoxDataObj.DefaultData.Diepte <> '', pxBoxDataObj.DefaultData.Diepte, '0')); - DefaultHoogte := StrToInt(ifthen(pxBoxDataObj.DefaultData.Hoogte <> '', pxBoxDataObj.DefaultData.Hoogte, '0')); + DefaultBreedte := pxBoxDataObj.DefaultData.Breedte; + DefaultDiepte := pxBoxDataObj.DefaultData.Diepte; + DefaultHoogte := pxBoxDataObj.DefaultData.Hoogte; DefaultPlaatsing := pxBoxDataObj.DefaultData.Plaatsing; DefaultOptiType := pxBoxDataObj.DefaultData.OptiType; @@ -543,7 +545,6 @@ MetaCaption := pxBoxDataObj.MetaCaption; // Verpakking parameters. Haal waarden uit gewone data en default data. - Parameters.Clear(); for I := 0 to High(pxBoxDataObj.Params) do begin NieuweVerpakkingParameter := TProductVerpakkingParameter.Create(); @@ -554,8 +555,10 @@ // Kijken of aantal parameters in default data overeenkomt met die in gewone data. if (pxBoxDataObj.DefaultData <> nil) and (High(pxBoxDataObj.Params) = High(pxBoxDataObj.DefaultData.Params)) then NieuweVerpakkingParameter.DefaultWaarde := pxBoxDataObj.DefaultData.Params[I].Waarde; - Parameters.Add(NieuweVerpakkingParameter); + TempNieuweVerpakkingParameters.Add(NieuweVerpakkingParameter); end; + SetParameters(TempNieuweVerpakkingParameters); + TempNieuweVerpakkingParameters.Clear(); end; // Toevoegen aan temp lijst met productverpakkingen @@ -565,6 +568,7 @@ Result := TempProductVerpakkingen; finally FreeAndNil(ZoekData); + FreeAndNil(TempNieuweVerpakkingParameters); end; end; Index: VerpakkingsDefinitie/UI/ZoekProductenScherm.dfm =================================================================== diff -u -r596 -r598 --- VerpakkingsDefinitie/UI/ZoekProductenScherm.dfm (.../ZoekProductenScherm.dfm) (revision 596) +++ VerpakkingsDefinitie/UI/ZoekProductenScherm.dfm (.../ZoekProductenScherm.dfm) (revision 598) @@ -34,10 +34,6 @@ TabOrder = 0 object TabSheetKortTekst: TTabSheet Caption = '(K) Kort tekst' - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 DesignSize = ( 353 176) @@ -144,10 +140,6 @@ object TabSheetLeveranciersRef: TTabSheet Caption = '(R) Leveranciers ref' ImageIndex = 2 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 DesignSize = ( 353 176) @@ -225,10 +217,6 @@ object TabSheetTekst: TTabSheet Caption = '(T) Tekst' ImageIndex = 3 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 DesignSize = ( 353 176) Index: VerpakkingsDefinitie/UI/VerpakkingDetailScherm.pas =================================================================== diff -u -r597 -r598 --- VerpakkingsDefinitie/UI/VerpakkingDetailScherm.pas (.../VerpakkingDetailScherm.pas) (revision 597) +++ VerpakkingsDefinitie/UI/VerpakkingDetailScherm.pas (.../VerpakkingDetailScherm.pas) (revision 598) @@ -13,11 +13,12 @@ Resourcestring NERGENS_DEEL_VAN_CAPTION = '--Nergens deel van--'; + GEEN_DATA_CAPTION = 'Geen verpakking geselecteerd'; type TFormVerpakkingDetail = class(TFormSubscherm) PanelVerpakkingControls: TPanel; - Label10: TLabel; + LabelParameters: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; @@ -53,6 +54,8 @@ CheckComboBoxPositie: TCheckedComboBox; CheckComboBoxRichting: TCheckedComboBox; + LabelGeenData: TLabel; + procedure LaadCheckedComboBoxen(); procedure UpdateGui(Sender: TObject); procedure ToonProductVerpakking(ProductVerpakking: TProductVerpakking); @@ -76,6 +79,7 @@ ProductVerpakkingSubject: TSubject); begin inherited Create(AOwner, Navigator, ApplicationContext); + // Observer self.FProductVerpakkingSubject := ProductVerpakkingSubject; self.FProductVerpakkingSubjectObserver := TSubjectObserver.Create(self); self.FProductVerpakkingSubjectObserver.OnChange := UpdateGui; @@ -97,6 +101,7 @@ procedure TFormVerpakkingDetail.LaadCheckedComboBoxen(); begin // Vervang sommige comboboxen door TCheckedComboBox + CheckComboBoxPositie := TCheckedComboBox.Create(self); with CheckComboBoxPositie do CheckComboBoxPositie.Delimiter := ';'; @@ -110,9 +115,17 @@ procedure TFormVerpakkingDetail.UpdateGui(Sender: TObject); begin - if ApplicationContext.ProductVerpakkingContext.GeselecteerdeVerpakking <> nil then - ToonProductVerpakking(ApplicationContext.ProductVerpakkingContext.GeselecteerdeVerpakking); + // Toon de geselecteerde verpakking + if ApplicationContext.ProductVerpakkingContext.GeselecteerdeVerpakking = nil then + begin + // Product niet aanwezig + TUtil.ToonLabelOverScherm(self, LabelGeenData, GEEN_DATA_CAPTION, false); + exit; + end; + // Product aanwezig + ToonProductVerpakking(ApplicationContext.ProductVerpakkingContext.GeselecteerdeVerpakking); + TUtil.ToonLabelOverScherm(self, LabelGeenData, GEEN_DATA_CAPTION, true); UpdateControlsEnableStatus(); end; @@ -126,9 +139,9 @@ for Item in Waarden.keys do ComboBox.Items.AddObject(Vertaling[Item], TObject(Item)); // Items selecteren. Als waarde niet aanwezig is, uit default halen. Als dat niet gaat eerste item selecteren. - if (GeselecteerdeWaarde <> '') and (Vertaling.TryGetValue(GeselecteerdeWaarde, Item) = True) then + if (GeselecteerdeWaarde <> '') and (Vertaling.TryGetValue(GeselecteerdeWaarde, Item) = true) then ComboBox.ItemIndex := ComboBox.Items.IndexOf(Item) - else if (DefaultGeselecteerdeWaarde <> '') and (Vertaling.TryGetValue(DefaultGeselecteerdeWaarde, Item) = True) then + else if (DefaultGeselecteerdeWaarde <> '') and (Vertaling.TryGetValue(DefaultGeselecteerdeWaarde, Item) = true) then ComboBox.ItemIndex := ComboBox.Items.IndexOf(Item) // Default else if ComboBox.Items.Count > 0 then ComboBox.ItemIndex := 0; // Geen waarde, geen default, eerste item selecteren. @@ -151,19 +164,19 @@ if GeselecteerdeWaarden.Count > 0 then begin for Item in GeselecteerdeWaarden do - if Vertaling.TryGetValue(Item, TempStr) = True then + if Vertaling.TryGetValue(Item, TempStr) = true then begin if CheckedComboBox.Items.IndexOf(TempStr) >= 0 then - CheckedComboBox.Checked[CheckedComboBox.Items.IndexOf(TempStr)] := True; + CheckedComboBox.Checked[CheckedComboBox.Items.IndexOf(TempStr)] := true; end; end else // Default waarden for Item in DefaultGeselecteerdeWaarden do - if Vertaling.TryGetValue(Item, TempStr) = True then + if Vertaling.TryGetValue(Item, TempStr) = true then begin if CheckedComboBox.Items.IndexOf(TempStr) >= 0 then - CheckedComboBox.Checked[CheckedComboBox.Items.IndexOf(TempStr)] := True; + CheckedComboBox.Checked[CheckedComboBox.Items.IndexOf(TempStr)] := true; end; end; @@ -197,36 +210,24 @@ // Breedte, Diepte, Hoogte. // Default waarde altijd als placeholder instellen - EditBreedte.TextHint := IntToStr(ProductVerpakking.DefaultBreedte); // Default + EditBreedte.TextHint := ProductVerpakking.DefaultBreedte; // Default if ProductVerpakking.Breedte <> ProductVerpakking.DefaultBreedte then - EditBreedte.Text := IntToStr(ProductVerpakking.Breedte); + EditBreedte.Text := ProductVerpakking.Breedte; - EditDiepte.TextHint := IntToStr(ProductVerpakking.DefaultDiepte); // Default + EditDiepte.TextHint := ProductVerpakking.DefaultDiepte; // Default if ProductVerpakking.Diepte <> ProductVerpakking.DefaultDiepte then - EditDiepte.Text := IntToStr(ProductVerpakking.Diepte); + EditDiepte.Text := ProductVerpakking.Diepte; - EditHoogte.TextHint := IntToStr(ProductVerpakking.DefaultHoogte); // Default + EditHoogte.TextHint := ProductVerpakking.DefaultHoogte; // Default if ProductVerpakking.Hoogte <> ProductVerpakking.DefaultHoogte then - EditHoogte.Text := IntToStr(ProductVerpakking.Hoogte); + EditHoogte.Text := ProductVerpakking.Hoogte; - // Max.Comb.Aantal, Aantal + // Max.Comb.Aantal EditMaxCombAantal.Text := ProductVerpakking.MaxCombinAantal; + + // Aantal EditAantal.Text := ProductVerpakking.Aantal; - // Parameters - TUtil.FreeControlChildren(ScrollBoxParameters); - for Parameter in ProductVerpakking.Parameters do - begin - NieuweParameterControl := TCustomPanelVerpakkingParameter.Create(ScrollBoxParameters); - with NieuweParameterControl do - begin - Parent := ScrollBoxParameters; - ProductVerpakkingParameter := Parameter; - end; - end; - - // Rechterhelft - // Plaatsing LaadEnSelecteerWaardenComboBox(ApplicationContext.UiInstellingenContext.Plaatsing, ComboBoxPlaatsing, ProductVerpakking.Plaatsing, ProductVerpakking.DefaultPlaatsing, ApplicationContext.UiInstellingenContext.Plaatsing); @@ -242,23 +243,35 @@ // OptiType LaadEnSelecteerWaardenComboBox(ApplicationContext.UiInstellingenContext.OptiTypes, ComboBoxOptiType, ProductVerpakking.OptiType, ProductVerpakking.DefaultOptiType, ApplicationContext.UiInstellingenContext.OptiTypes); + + + // Rechterhelft + + // Parameters + TUtil.FreeControlChildren(ScrollBoxParameters); + for Parameter in ProductVerpakking.Parameters do + begin + NieuweParameterControl := TCustomPanelVerpakkingParameter.Create(ScrollBoxParameters); + with NieuweParameterControl do + begin + Parent := ScrollBoxParameters; + ProductVerpakkingParameter := Parameter; + end; + end; end; procedure TFormVerpakkingDetail.UpdateControlsEnableStatus(); -var - VerpakkingAanwezigEnGeselecteerd: Boolean; - I: Integer; begin - // Details controls enable status aanpassen naargelang er een verpakking geselecteerd is. - VerpakkingAanwezigEnGeselecteerd := ApplicationContext.ProductVerpakkingContext.GeselecteerdeVerpakking <> nil; - for I := 0 to PanelVerpakkingControls.ControlCount - 1 do - if Assigned(PanelVerpakkingControls.Controls[I]) then - PanelVerpakkingControls.Controls[I].Enabled := VerpakkingAanwezigEnGeselecteerd; - - // Linkerdeel, wat hierboven ook uitkomt, deze controls overschrijven. - EditMeta.Enabled := False; - EditVolumeVan.Enabled := False; - ComboBoxDeelVan.Enabled := (ComboBoxDeelVan.Items.Count > 0) and VerpakkingAanwezigEnGeselecteerd; + EditMeta.Enabled := false; + EditVolumeVan.Enabled := false; + ComboBoxDeelVan.Enabled := (ComboBoxDeelVan.Items.Count > 0); + ComboBoxPlaatsing.Enabled := (ComboBoxPlaatsing.Items.Count > 0); + ComboBoxPositie.Enabled := (ComboBoxPositie.Items.Count > 0); + ComboBoxRichting.Enabled := (ComboBoxRichting.Items.Count > 0); + ComboBoxOptiType.Enabled := (ComboBoxOptiType.Items.Count > 0); + // Parameters + ScrollBoxParameters.visible := (ScrollBoxParameters.ControlCount > 0); + LabelParameters.visible := (ScrollBoxParameters.ControlCount > 0); end; end. Index: VerpakkingsDefinitie/UI/NavProductScherm.dfm =================================================================== diff -u -r594 -r598 --- VerpakkingsDefinitie/UI/NavProductScherm.dfm (.../NavProductScherm.dfm) (revision 594) +++ VerpakkingsDefinitie/UI/NavProductScherm.dfm (.../NavProductScherm.dfm) (revision 598) @@ -79,6 +79,5 @@ end> ShowCaption = False TabOrder = 1 - ExplicitWidth = 519 end end Index: VerpakkingsDefinitie/UI/NavProductScherm.pas =================================================================== diff -u -r596 -r598 --- VerpakkingsDefinitie/UI/NavProductScherm.pas (.../NavProductScherm.pas) (revision 596) +++ VerpakkingsDefinitie/UI/NavProductScherm.pas (.../NavProductScherm.pas) (revision 598) @@ -57,8 +57,8 @@ TUtil.FreeControlChildren(GridPanelLeft); TUtil.FreeControlChildren(GridPanelRight); // Reset de data. Na het verwijderen van de schermen zodat deze niet eerst updaten - ApplicationContext.ProductsContext.Reset(False); - ApplicationContext.ProductVerpakkingContext.Reset(False); + ApplicationContext.ProductsContext.Reset(); + ApplicationContext.ProductVerpakkingContext.Reset(); // Vul linkergrid TUtil.PlaatsControlOpGrid(GridPanelLeft, TFormZoekProducten.Create(GridPanelLeft, self, ApplicationContext, FProductsAgent), 0, 0); @@ -67,6 +67,7 @@ end; NAVTOONPRODUCTEN: begin + ApplicationContext.ProductVerpakkingContext.Reset(true); end; NAVTOONPRODUCT: begin Index: VerpakkingsDefinitie/UI/ProductDetailScherm.dfm =================================================================== diff -u -r596 -r598 --- VerpakkingsDefinitie/UI/ProductDetailScherm.dfm (.../ProductDetailScherm.dfm) (revision 596) +++ VerpakkingsDefinitie/UI/ProductDetailScherm.dfm (.../ProductDetailScherm.dfm) (revision 598) @@ -123,7 +123,7 @@ -1) end item - Caption = 'Dim' + Caption = 'Dim (B x D x H)' Width = -1 WidthType = ( -1) Index: VerpakkingsDefinitie/UI/CustomPanelVerpakkingParameter.pas =================================================================== diff -u -r590 -r598 --- VerpakkingsDefinitie/UI/CustomPanelVerpakkingParameter.pas (.../CustomPanelVerpakkingParameter.pas) (revision 590) +++ VerpakkingsDefinitie/UI/CustomPanelVerpakkingParameter.pas (.../CustomPanelVerpakkingParameter.pas) (revision 598) @@ -65,9 +65,9 @@ Parent := Self; Left := 5; top := 20; - width := 100; - Constraints.MaxWidth := 100; - Anchors := [akLeft, akRight]; + width := 70; + Constraints.MaxWidth := 70; + Anchors := [akLeft]; AlignWithMargins := True; // Spacing tussen de controls end; end; Index: VerpakkingsDefinitie/UI/ProductDetailScherm.pas =================================================================== diff -u -r597 -r598 --- VerpakkingsDefinitie/UI/ProductDetailScherm.pas (.../ProductDetailScherm.pas) (revision 597) +++ VerpakkingsDefinitie/UI/ProductDetailScherm.pas (.../ProductDetailScherm.pas) (revision 598) @@ -43,7 +43,6 @@ procedure UpdateGuiVerpakkingen(Sender: TObject); procedure LaadProductVerpakkingen(GeselecteerdProduct: TProductInformatie); procedure UpdateVerpakkingControlsEnableStatus(); - procedure UpdateGuiProductAanwezigheid(Aanwezig: Boolean); public Constructor Create(AOwner: TComponent; Navigator: INavigator; ApplicationContext: TApplicationContext; ProductsContextSubject: TSubject; VerpakkingContextSubject: TSubject; ProductsAgent: TProductsAgent); @@ -90,7 +89,7 @@ GeselecteerdProduct := ApplicationContext.ProductsContext.GeselecteerdProduct; if GeselecteerdProduct = nil then begin - UpdateGuiProductAanwezigheid(False); + TUtil.ToonLabelOverScherm(self, LabelGeenData, GEEN_DATA_CAPTION, False); exit; end; @@ -102,7 +101,7 @@ LabelProductNaam.Caption := GeselecteerdProduct.Kol1; LabelProductNummer.Caption := intToStr(GeselecteerdProduct.ProductNr); - UpdateGuiProductAanwezigheid(True); + TUtil.ToonLabelOverScherm(self, LabelGeenData, GEEN_DATA_CAPTION, true); // Verpakkingen opzoeken horende bij dit geselecteerde product LaadProductVerpakkingen(GeselecteerdProduct); @@ -140,7 +139,7 @@ FVerpakkingenContextSubjectObserver.Enabled := False; ApplicationContext.ProductVerpakkingContext.GeselecteerdeVerpakking := TProductVerpakking(ListViewVerpakkingen.Selected.Data); - FVerpakkingenContextSubjectObserver.Enabled := True; + FVerpakkingenContextSubjectObserver.Enabled := true; end; Navigator.NavigeerNaar(NAVTOONPRODUCTVERPAKKING); @@ -163,8 +162,8 @@ // Caption := IntToStr(Product.ProductNr); // Deze casting geeft geen access violation Caption := intToStr(ProductVerpakking.CutOrder); SubItems.Add(ProductVerpakking.MetaCaptionDisplay); - SubItems.Add(intToStr(ProductVerpakking.Breedte) + ' x ' + intToStr(ProductVerpakking.Diepte) + ' x ' + - intToStr(ProductVerpakking.Hoogte)); + SubItems.Add(ProductVerpakking.BreedteDisplay + ' x ' + ProductVerpakking.DiepteDisplay + ' x ' + + ProductVerpakking.HoogteDisplay); SubItems.Add(ProductVerpakking.Aantal); SubItems.Add(ProductVerpakking.MaxCombinAantal); SubItems.Add(ProductVerpakking.DeelVanCaption); @@ -200,47 +199,4 @@ ButtonVerwijder.Enabled := VerpakkingAanwezigEnGeselecteerd; end; -procedure TFormProductDetail.UpdateGuiProductAanwezigheid(Aanwezig: Boolean); -var - I: Integer; -begin - if Aanwezig then - begin - // Skip update als alles al zichtbaar staat. - if Assigned(LabelGeenData) = False then - exit; - - // Wel resultaten, toon alles. - for I := 0 to self.ControlCount - 1 do - if Assigned(self.Controls[I]) then - self.Controls[I].Visible := True; - - LabelGeenData.Visible := False; - FreeAndNil(LabelGeenData); - end - else - begin - // Skip update als melding al getoond wordt en alles onzichtbaar staat. - if Assigned(LabelGeenData) then - exit; - - // Geen resultaten, verberg kinderen, toon melding (label) en stop. - for I := 0 to self.ControlCount - 1 do - if Assigned(self.Controls[I]) then - self.Controls[I].Visible := False; - // Label tonen - LabelGeenData := TLabel.Create(self); - with LabelGeenData do - begin - Parent := self; - Caption := GEEN_DATA_CAPTION; - Font.Size := 15; - // Centreren: https://stackoverflow.com/questions/18545937/make-a-component-appear-in-the-middle-of-form-no-matter-what-screen-resolution - Left := (self.Width - Width) div 2; - Top := (self.Height - Height) div 2; - Anchors := []; // Relatief tegenover parent - end; - end -end; - end. Index: VerpakkingsDefinitie/UI/VerpakkingDetailScherm.dfm =================================================================== diff -u -r594 -r598 --- VerpakkingsDefinitie/UI/VerpakkingDetailScherm.dfm (.../VerpakkingDetailScherm.dfm) (revision 594) +++ VerpakkingsDefinitie/UI/VerpakkingDetailScherm.dfm (.../VerpakkingDetailScherm.dfm) (revision 598) @@ -3,7 +3,7 @@ Top = 0 Caption = 'FormVerpakkingDetail' ClientHeight = 418 - ClientWidth = 658 + ClientWidth = 672 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText @@ -14,42 +14,46 @@ OnCreate = FormCreate OnDestroy = FormDestroy DesignSize = ( - 658 + 672 418) PixelsPerInch = 96 TextHeight = 13 object PanelVerpakkingControls: TPanel Left = 0 Top = 0 - Width = 657 + Width = 671 Height = 417 Anchors = [akLeft, akTop, akRight, akBottom] BevelOuter = bvNone TabOrder = 0 - object Label10: TLabel - Left = 8 - Top = 271 + ExplicitWidth = 657 + DesignSize = ( + 671 + 417) + object LabelParameters: TLabel + Left = 336 + Top = 15 Width = 55 Height = 13 Caption = 'Parameters' end object Label11: TLabel - Left = 360 - Top = 79 + Left = 8 + Top = 271 Width = 43 Height = 13 Caption = 'Plaatsing' end object Label12: TLabel - Left = 360 - Top = 111 + Left = 8 + Top = 303 Width = 31 Height = 13 Caption = 'Positie' end object Label13: TLabel - Left = 360 - Top = 143 + Left = 8 + Top = 335 Width = 38 Height = 13 Caption = 'Richting' @@ -111,8 +115,8 @@ Caption = 'Volume van' end object Label14: TLabel - Left = 360 - Top = 207 + Left = 8 + Top = 367 Width = 44 Height = 13 Caption = 'OptiType' @@ -134,24 +138,24 @@ TabOrder = 1 end object ComboBoxPlaatsing: TComboBox - Left = 464 - Top = 76 + Left = 112 + Top = 268 Width = 162 Height = 21 Style = csDropDownList TabOrder = 2 end object ComboBoxPositie: TComboBox - Left = 464 - Top = 108 + Left = 112 + Top = 300 Width = 162 Height = 21 Style = csDropDownList TabOrder = 3 end object ComboBoxRichting: TComboBox - Left = 464 - Top = 140 + Left = 112 + Top = 332 Width = 162 Height = 21 Style = csDropDownList @@ -209,18 +213,19 @@ TabOrder = 11 end object ComboBoxOptiType: TComboBox - Left = 464 - Top = 204 + Left = 112 + Top = 364 Width = 162 Height = 21 Style = csDropDownList TabOrder = 12 end object ScrollBoxParameters: TScrollBox - Left = 112 - Top = 268 - Width = 200 - Height = 125 + Left = 336 + Top = 34 + Width = 321 + Height = 226 + Anchors = [akLeft, akTop, akRight] TabOrder = 13 end end