Index: VerpakkingsDefinitie/UI/ProductDetailScherm.pas =================================================================== diff -u -r582 -r585 --- VerpakkingsDefinitie/UI/ProductDetailScherm.pas (.../ProductDetailScherm.pas) (revision 582) +++ VerpakkingsDefinitie/UI/ProductDetailScherm.pas (.../ProductDetailScherm.pas) (revision 585) @@ -7,7 +7,7 @@ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Subscherm, Main, ApplicationContext, ObserverPattern, Vcl.ComCtrls, Vcl.CheckLst, - CheckCombo; + CheckCombo, Vcl.ExtCtrls; resourceString GEEN_DATA_CAPTION = 'Geen data om te tonen'; @@ -19,7 +19,7 @@ LabelOmschrijving2: TLabel; Label1: TLabel; LabelProductNaam: TLabel; - ListViewDozen: TListView; + ListViewVerpakkingen: TListView; GroupBox1: TGroupBox; ButtonNieuw: TButton; ButtonVerwijder: TButton; @@ -46,9 +46,11 @@ ComboBoxRichting: TComboBox; ButtonMeta: TButton; MemoParameters: TMemo; + PanelVerpakkingControls: TPanel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); + procedure ListViewVerpakkingenSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); private FProductDetailsSubject: TSubject; FProductDetailsSubjectObserver: TSubjectObserver; @@ -58,8 +60,9 @@ CheckComboBoxRichting: TCheckedComboBox; procedure UpdateGui(Sender: TObject); + procedure ToonProductVerpakking(ProductVerpakking: TProductVerpakking); procedure UpdateControlsEnableStatus(); - procedure UpdateGuiDataAanwezigheid(Aanwezig: boolean); + procedure UpdateGuiDataAanwezigheid(Aanwezig: Boolean); public Constructor Create(AOwner: TComponent; Navigator: INavigator; ApplicationContext: TApplicationContext; ProductDetailsSubject: TSubject); @@ -100,12 +103,16 @@ FProductDetailsSubject.UnregisterObserver(FProductDetailsSubjectObserver); end; +procedure TFormProductDetail.ListViewVerpakkingenSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); +begin + if Selected then + if (ListViewVerpakkingen.Selected.Data <> nil) then + ToonProductVerpakking(TProductVerpakking(ListViewVerpakkingen.Selected.Data)); +end; + procedure TFormProductDetail.UpdateGui(Sender: TObject); var ProductVerpakking: TProductVerpakking; - TempStr: string; - Item: string; - I: Integer; VorigeIndexInList: Integer; begin if (ApplicationContext.ProductDetailContext.GeselecteerdProduct = nil) or @@ -122,21 +129,22 @@ LabelOmschrijving2.Caption := ApplicationContext.ProductDetailContext.GeselecteerdProduct.Omschrijving2; LabelProductNaam.Caption := ApplicationContext.ProductDetailContext.GeselecteerdProduct.Kol1; - VorigeIndexInList := ListViewDozen.ItemIndex; + VorigeIndexInList := ListViewVerpakkingen.ItemIndex; // List view (grid) - ListViewDozen.Clear(); + ListViewVerpakkingen.Clear(); for ProductVerpakking in ApplicationContext.ProductDetailContext.ProductVerpakkingen do begin - With ListViewDozen.Items.Add Do + With ListViewVerpakkingen.Items.Add Do begin // Caption := IntToStr(Product.ProductNr); // Deze casting geeft geen access violation Caption := IntToStr(ProductVerpakking.CutOrder); SubItems.Add(ProductVerpakking.MetaCaption); SubItems.Add(ProductVerpakking.Breedte + ' x ' + ProductVerpakking.Diepte + ' x ' + ProductVerpakking.Hoogte); SubItems.Add(ProductVerpakking.Aantal); SubItems.Add(ProductVerpakking.MaxCombinAantal); - // SubItems.Add(ProductVerpakking.DeelVanCaption); + SubItems.Add(ifthen(ProductVerpakking.DeelVan <> nil, ProductVerpakking.DeelVan.MetaCaption, '')); + Data := ProductVerpakking; end; end; @@ -146,8 +154,20 @@ else if ApplicationContext.ProductDetailContext.ProductVerpakkingen.Count > 0 then ProductVerpakking := ApplicationContext.ProductDetailContext.ProductVerpakkingen[0] // Default eerste verpakking selecteren else - exit; // Geen verpakking aanwezig + ProductVerpakking := nil; // Geen verpakking aanwezig + if ProductVerpakking <> nil then + ToonProductVerpakking(ProductVerpakking); + + UpdateControlsEnableStatus() +end; + +procedure TFormProductDetail.ToonProductVerpakking(ProductVerpakking: TProductVerpakking); +var + I: Integer; + TempStr: string; + Item: string; +begin // Linkerhelft EditMeta.Text := ProductVerpakking.MetaCaption; @@ -164,7 +184,8 @@ // Index zoeken in lijst van producten ComboBoxDeelVan.ItemIndex := ApplicationContext.ProductDetailContext.ProductVerpakkingen.IndexOf(ProductVerpakking.DeelVan) else - ComboBoxDeelVan.ItemIndex := ComboBoxDeelVan.Items.Count - 1; // Default waarde: 'niks' optie selecteren + ComboBoxDeelVan.ItemIndex := ComboBoxDeelVan.Items.Count - 1; + // Default waarde: 'niks' optie selecteren if ProductVerpakking.Breedte <> '' then EditBreedte.Text := ProductVerpakking.Breedte @@ -226,17 +247,26 @@ if CheckComboBoxRichting.Items.IndexOf(TempStr) >= 0 then CheckComboBoxRichting.Checked[CheckComboBoxRichting.Items.IndexOf(TempStr)] := True; end; - - UpdateControlsEnableStatus() end; procedure TFormProductDetail.UpdateControlsEnableStatus(); +var + VerpakkingAanwezigEnGeselecteerd: Boolean; + I: Integer; begin + // Details controls enable status aanpassen naargelang er een verpakking geselecteerd is. + VerpakkingAanwezigEnGeselecteerd := (ListViewVerpakkingen.Items.Count = 0) or (ListViewVerpakkingen.ItemIndex < 0); + for I := 0 to PanelVerpakkingControls.ControlCount - 1 do + if Assigned(PanelVerpakkingControls.Controls[I]) then + PanelVerpakkingControls.Controls[I].Enabled := VerpakkingAanwezigEnGeselecteerd; + + ButtonVerwijder.Enabled := VerpakkingAanwezigEnGeselecteerd; + // Linkerdeel - ComboBoxDeelVan.Enabled := ComboBoxDeelVan.Items.Count > 0; + ComboBoxDeelVan.Enabled := (ComboBoxDeelVan.Items.Count > 0) and VerpakkingAanwezigEnGeselecteerd; end; -procedure TFormProductDetail.UpdateGuiDataAanwezigheid(Aanwezig: boolean); +procedure TFormProductDetail.UpdateGuiDataAanwezigheid(Aanwezig: Boolean); var I: Integer; begin @@ -251,6 +281,8 @@ if Assigned(self.Controls[I]) then self.Controls[I].Visible := True; + LabelGeenData.Visible := False; + PanelVerpakkingControls.Refresh(); // Anders verdwijnt label enkel op resize FreeAndNil(LabelGeenData); end else