unit ZoekProductenScherm; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls, Subscherm, Navigator, ApplicationContext, ProductsAgent; type TFormZoekProducten = class(TFormSubscherm) PageControl1: TPageControl; TabSheetKortTekst: TTabSheet; TabSheetIdentificatieNr: TTabSheet; TabSheetLeveranciersRef: TTabSheet; TabSheetTekst: TTabSheet; Label1: TLabel; EditZoekKortTekst: TEdit; Label2: TLabel; ComboBoxBeperkKortTekst: TComboBox; EditBeperkKortTekst: TEdit; ButtonZoekViaKortTekst: TButton; Label3: TLabel; EditZoekIdentNr: TEdit; ButtonZoekIdentNr: TButton; Label4: TLabel; Label5: TLabel; EditZoekReferentie: TEdit; EditKlantNrReferentie: TEdit; Label6: TLabel; ComboBoxStockTypeReferentie: TComboBox; ButtonZoekLeveranciersReferentie: TButton; Label7: TLabel; Label8: TLabel; EditZoekTekst: TEdit; ComboBoxTaalTekst: TComboBox; Label10: TLabel; ComboBoxBeperkTekst: TComboBox; EditBeperkTekst: TEdit; ButtonZoekTekst: TButton; procedure FormCreate(Sender: TObject); procedure ButtonZoekViaKortTekstClick(Sender: TObject); procedure EditZoekKortTekstChange(Sender: TObject); procedure ComboBoxBeperkKortTekstChange(Sender: TObject); procedure ButtonZoekIdentNrClick(Sender: TObject); procedure ButtonZoekLeveranciersReferentieClick(Sender: TObject); procedure ComboBoxBeperkTekstChange(Sender: TObject); procedure EditZoekIdentNrChange(Sender: TObject); procedure EditReferentieChange(Sender: TObject); procedure EditZoekTekstChange(Sender: TObject); procedure ButtonZoekTekstClick(Sender: TObject); procedure EditZoekKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private FProductsAgent: TProductsAgent; procedure ComboBoxBeperkUpdatet(ComboBox: TComboBox; EditText: TEdit); procedure ZoekViaKortTekst(); procedure ZoekIdentNr(); procedure ZoekLeveranciersReferentie(); procedure ZoekTekst(); procedure VerwerkOpzoeking(); public Constructor Create(AOwner: TComponent; Navigator: INavigator; ApplicationContext: TApplicationContext; ProductAgent: TProductsAgent); end; implementation {$R *.dfm} constructor TFormZoekProducten.Create(AOwner: TComponent; Navigator: INavigator; ApplicationContext: TApplicationContext; ProductAgent: TProductsAgent); begin inherited Create(AOwner, Navigator, ApplicationContext); self.FProductsAgent := ProductAgent; end; procedure TFormZoekProducten.FormCreate(Sender: TObject); begin // UI configuratie // Zoeken op kort tekst ComboBoxBeperkKortTekst.ItemIndex := 0; // Default value ComboBoxBeperkUpdatet(ComboBoxBeperkKortTekst, EditBeperkKortTekst); // Zoeken op leveranciers referentie ComboBoxStockTypeReferentie.ItemIndex := 0; // Default value // Zoeken op tekst ComboBoxTaalTekst.ItemIndex := 0; ComboBoxBeperkTekst.ItemIndex := 0; ComboBoxBeperkUpdatet(ComboBoxBeperkTekst, EditBeperkTekst); end; // Combo boxen procedure TFormZoekProducten.ComboBoxBeperkKortTekstChange(Sender: TObject); begin ComboBoxBeperkUpdatet(ComboBoxBeperkKortTekst, EditBeperkKortTekst); end; procedure TFormZoekProducten.ComboBoxBeperkTekstChange(Sender: TObject); begin ComboBoxBeperkUpdatet(ComboBoxBeperkTekst, EditBeperkTekst); end; procedure TFormZoekProducten.ComboBoxBeperkUpdatet(ComboBox: TComboBox; EditText: TEdit); begin if ComboBox.ItemIndex > -1 then if ComboBox.Items[ComboBox.ItemIndex] = 'Klant nummer' then EditText.Enabled := true else if ComboBox.Items[ComboBox.ItemIndex] = 'Leveranciers nummer' then EditText.Enabled := true else if ComboBox.Items[ComboBox.ItemIndex] = '--Geen beperking--' then EditText.Enabled := false else raise Exception.Create('Ongeldige waarde geselecteerd'); end; // Edit change events procedure TFormZoekProducten.EditZoekKortTekstChange(Sender: TObject); begin ButtonZoekViaKortTekst.Enabled := (Sender as TEdit).text <> EmptyStr; end; procedure TFormZoekProducten.EditZoekIdentNrChange(Sender: TObject); begin ButtonZoekIdentNr.Enabled := (Sender as TEdit).text <> EmptyStr; end; procedure TFormZoekProducten.EditReferentieChange(Sender: TObject); begin ButtonZoekLeveranciersReferentie.Enabled := (EditZoekReferentie.text <> EmptyStr) and (EditKlantNrReferentie.text <> EmptyStr); end; procedure TFormZoekProducten.EditZoekTekstChange(Sender: TObject); begin ButtonZoekTekst.Enabled := (Sender as TEdit).text <> EmptyStr; end; // Vang 'enter' bij invoer en zoek op procedure TFormZoekProducten.EditZoekKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var EditControl: TEdit; begin inherited; if ord(Key) = VK_RETURN then begin Key := 0; EditControl := Sender as TEdit; if (EditControl.Name = EditZoekKortTekst.Name) or (EditControl.Name = EditBeperkKortTekst.Name) then ZoekViaKortTekst() else if EditControl.Name = EditZoekIdentNr.Name then ZoekIdentNr() else if (EditControl.Name = EditZoekReferentie.Name) or (EditControl.Name = EditKlantNrReferentie.Name) then ZoekLeveranciersReferentie() else if (EditControl.Name = EditZoekTekst.Name) or (EditControl.Name = EditBeperkTekst.Name) then ZoekTekst() end; end; // Button zoek events procedure TFormZoekProducten.ButtonZoekViaKortTekstClick(Sender: TObject); begin ZoekViaKortTekst(); end; procedure TFormZoekProducten.ButtonZoekIdentNrClick(Sender: TObject); begin // ZoekOp(UserContext; ProductsContext; Zoekmethode; Zoek; KLNr; LevNr; StockType; Taal); FProductsAgent.ZoekOp(ApplicationContext.UserContext, ApplicationContext.ProductsContext, TZoekMethode.IdentificatieNr, EditZoekIdentNr.text, '', '', '', ''); VerwerkOpzoeking(); end; procedure TFormZoekProducten.ButtonZoekLeveranciersReferentieClick(Sender: TObject); var StockType: string; begin // ZoekOp(UserContext; ProductsContext; Zoekmethode; Zoek; KLNr; LevNr; StockType; Taal); if ComboBoxStockTypeReferentie.Items[ComboBoxStockTypeReferentie.ItemIndex] = '--Niet gespecifieerd--' then StockType := '' else StockType := ComboBoxStockTypeReferentie.Items[ComboBoxStockTypeReferentie.ItemIndex]; FProductsAgent.ZoekOp(ApplicationContext.UserContext, ApplicationContext.ProductsContext, TZoekMethode.LeveranciersRef, EditZoekReferentie.text, EditKlantNrReferentie.text, '', StockType, ''); VerwerkOpzoeking(); end; procedure TFormZoekProducten.ButtonZoekTekstClick(Sender: TObject); var Taal: string; KlantNummer: string; LeveranciersNummer: string; begin // Taal bepalen if ComboBoxTaalTekst.Items[ComboBoxTaalTekst.ItemIndex] = '--Niet gespecifieerd--' then Taal := '' else Taal := ComboBoxTaalTekst.Items[ComboBoxTaalTekst.ItemIndex]; // ZoekOp(UserContext; ProductsContext; Zoekmethode; Zoek; KLNr; LevNr; StockType; Taal); if ComboBoxBeperkTekst.Items[ComboBoxBeperkTekst.ItemIndex] = 'Klant nummer' then KlantNummer := EditBeperkTekst.text else if ComboBoxBeperkTekst.Items[ComboBoxBeperkTekst.ItemIndex] = 'Leveranciers nummer' then LeveranciersNummer := EditBeperkTekst.text else if ComboBoxBeperkTekst.Items[ComboBoxBeperkTekst.ItemIndex] = '--Geen beperking--' then else raise Exception.Create('Ongeldige waarde geselecteerd'); FProductsAgent.ZoekOp(ApplicationContext.UserContext, ApplicationContext.ProductsContext, TZoekMethode.Tekst, EditZoekTekst.text, KlantNummer, LeveranciersNummer, '', Taal); VerwerkOpzoeking(); end; // Corresponderende 'zoek' functies procedure TFormZoekProducten.ZoekViaKortTekst(); var KlantNummer: string; LeveranciersNummer: string; begin // ZoekOp(UserContext; ProductsContext; Zoekmethode; Zoek; KLNr; LevNr; StockType; Taal); KlantNummer := ''; LeveranciersNummer := ''; if ComboBoxBeperkKortTekst.Items[ComboBoxBeperkKortTekst.ItemIndex] = 'Klant nummer' then KlantNummer := EditBeperkKortTekst.text else if ComboBoxBeperkKortTekst.Items[ComboBoxBeperkKortTekst.ItemIndex] = 'Leveranciers nummer' then LeveranciersNummer := EditBeperkKortTekst.text else if ComboBoxBeperkKortTekst.Items[ComboBoxBeperkKortTekst.ItemIndex] = '--Geen beperking--' then else raise Exception.Create('Ongeldige waarde geselecteerd'); FProductsAgent.ZoekOp(ApplicationContext.UserContext, ApplicationContext.ProductsContext, TZoekMethode.KortTekst, EditZoekKortTekst.text, KlantNummer, LeveranciersNummer, '', ''); VerwerkOpzoeking(); end; procedure TFormZoekProducten.ZoekIdentNr(); begin // ZoekOp(UserContext; ProductsContext; Zoekmethode; Zoek; KLNr; LevNr; StockType; Taal); FProductsAgent.ZoekOp(ApplicationContext.UserContext, ApplicationContext.ProductsContext, TZoekMethode.IdentificatieNr, EditZoekIdentNr.text, '', '', '', ''); VerwerkOpzoeking(); end; procedure TFormZoekProducten.ZoekLeveranciersReferentie(); var StockType: string; begin // ZoekOp(UserContext; ProductsContext; Zoekmethode; Zoek; KLNr; LevNr; StockType; Taal); if ComboBoxStockTypeReferentie.Items[ComboBoxStockTypeReferentie.ItemIndex] = '--Niet gespecifieerd--' then StockType := '' else StockType := ComboBoxStockTypeReferentie.Items[ComboBoxStockTypeReferentie.ItemIndex]; FProductsAgent.ZoekOp(ApplicationContext.UserContext, ApplicationContext.ProductsContext, TZoekMethode.LeveranciersRef, EditZoekReferentie.text, EditKlantNrReferentie.text, '', StockType, ''); VerwerkOpzoeking(); end; procedure TFormZoekProducten.ZoekTekst(); var Taal: string; KlantNummer: string; LeveranciersNummer: string; begin // Taal bepalen if ComboBoxTaalTekst.Items[ComboBoxTaalTekst.ItemIndex] = '--Niet gespecifieerd--' then Taal := '' else Taal := ComboBoxTaalTekst.Items[ComboBoxTaalTekst.ItemIndex]; // ZoekOp(UserContext; ProductsContext; Zoekmethode; Zoek; KLNr; LevNr; StockType; Taal); if ComboBoxBeperkTekst.Items[ComboBoxBeperkTekst.ItemIndex] = 'Klant nummer' then KlantNummer := EditBeperkTekst.text else if ComboBoxBeperkTekst.Items[ComboBoxBeperkTekst.ItemIndex] = 'Leveranciers nummer' then LeveranciersNummer := EditBeperkTekst.text else if ComboBoxBeperkTekst.Items[ComboBoxBeperkTekst.ItemIndex] = '--Geen beperking--' then else raise Exception.Create('Ongeldige waarde geselecteerd'); FProductsAgent.ZoekOp(ApplicationContext.UserContext, ApplicationContext.ProductsContext, TZoekMethode.Tekst, EditZoekTekst.text, KlantNummer, LeveranciersNummer, '', Taal); VerwerkOpzoeking(); end; procedure TFormZoekProducten.VerwerkOpzoeking(); var ErrorMessage: string; begin if ApplicationContext.ProductsContext.IsOK then // Gelukt Navigator.NavigeerNaar(NAVTOONPRODUCTEN) else begin // Opzoeking gefaald ErrorMessage := ApplicationContext.ProductsContext.ErrorMessage; if ApplicationContext.ProductsContext.InternalErrorMessage <> '' then begin ErrorMessage := ErrorMessage + sLineBreak + ApplicationContext.ProductsContext.InternalErrorMessage; end; MessageDlg(ErrorMessage, TMsgDlgType.mtInformation, [mbOK], 0, mbCancel) end; end; end.