unit HernoemPalletScherm; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, DrieKnoppenScherm, Vcl.ActnList, Vcl.StdCtrls, Vcl.Grids, Vcl.ComCtrls, Vcl.ExtCtrls, DnaCodeService, Vcl.Imaging.pngimage; type TfmHernoemPalletScherm = class(TfmDrieKnoppenScherm) pnlHoofd: TPanel; pcHernoemPallet: TPageControl; tsOudeCode: TTabSheet; tsResultaat: TTabSheet; edtOudeCode: TEdit; lblOudeCode: TLabel; sgToeleveringData: TStringGrid; lblPallet: TLabel; lblAantal: TLabel; tsNieuweCode: TTabSheet; edtNieuweCode: TEdit; lblNieuweCode: TLabel; btnLaatst: TButton; btnVolgende: TButton; btnVorige: TButton; btnEerst: TButton; imgHernoem: TImage; Image1: TImage; procedure FormShow(Sender: TObject); procedure actHomeExecute(Sender: TObject); procedure actVolgendeExecute(Sender: TObject); procedure btnEerstClick(Sender: TObject); procedure btnVorigeClick(Sender: TObject); procedure btnVolgendeClick(Sender: TObject); procedure btnLaatstClick(Sender: TObject); procedure edtOudeCodeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtNieuweCodeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private fEnkelDezeDnaCode: string; procedure VulGridMetToeleveringData(DnaCodes: array of DnaCode); procedure GridLeegmaken; function HernoemPallet(OudeCode, NieuweCode: string): HernoemPalletResponse; function CheckBestaandeDnaCode(Code: string): boolean; public { Public declarations } end; var fmHernoemPalletScherm: TfmHernoemPalletScherm; implementation uses UiContext, Agent, CommonFunctions, ProScanMain; {$R *.dfm} procedure TfmHernoemPalletScherm.actHomeExecute(Sender: TObject); begin inherited; PostMessage(Self.Handle,WM_Close,0,0); (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(mrHome); end; procedure TfmHernoemPalletScherm.actVolgendeExecute(Sender: TObject); begin inherited; if pcHernoemPallet.ActivePageIndex = 0 then begin fEnkelDezeDnaCode := ''; if ((length(edtOudeCode.Text)=7) and CheckBestaandeDnaCode(edtOudeCode.Text)) then begin if ToonPopupScherm('Enkel code ''' + TCommonFunctions.VerkorteDnaCode(edtOudeCode.Text) + ''' verwerken?','Ja','Nee',14,6,7) = mrYes then begin fEnkelDezeDnaCode := edtOudeCode.Text end; end; HernoemPallet(edtOudeCode.Text,''); if fEnkelDezeDnaCode = '' then pcHernoemPallet.ActivePageIndex := 1 else pcHernoemPallet.ActivePageIndex := 2; end else if pcHernoemPallet.ActivePageIndex = 1 then begin pcHernoemPallet.ActivePageIndex := 2; end else if pcHernoemPallet.ActivePageIndex = 2 then begin HernoemPallet(edtOudeCode.Text, edtNieuweCode.Text); end; end; procedure TfmHernoemPalletScherm.btnEerstClick(Sender: TObject); begin inherited; sgToeleveringData.Row := 1; end; procedure TfmHernoemPalletScherm.btnLaatstClick(Sender: TObject); begin inherited; sgToeleveringData.Row := sgToeleveringData.RowCount - 1; end; procedure TfmHernoemPalletScherm.btnVolgendeClick(Sender: TObject); begin inherited; if sgToeleveringData.Row < sgToeleveringData.RowCount - 1 then sgToeleveringData.Row := sgToeleveringData.Row + 1 end; procedure TfmHernoemPalletScherm.btnVorigeClick(Sender: TObject); begin inherited; if sgToeleveringData.Row > 1 then sgToeleveringData.Row := sgToeleveringData.Row - 1; end; function TfmHernoemPalletScherm.CheckBestaandeDnaCode(Code: string): boolean; var Response: ZoekViaDnaCodeResponse; begin Response := TAgent.Create(UiContext).ZoekViaDnaCode(Code); try if Response.Header.Status <> '200' then begin result := false end else begin if Assigned(Response.DnaCodes) then begin result := true end else begin result := false end; end; finally Response.Free; end; end; procedure TfmHernoemPalletScherm.edtNieuweCodeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin inherited; if Key = VK_RETURN then begin actVolgende.Execute; Key := 0; end; end; procedure TfmHernoemPalletScherm.edtOudeCodeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin inherited; if Key = VK_RETURN then begin actVolgende.Execute; Key := 0; end; end; function TfmHernoemPalletScherm.HernoemPallet(OudeCode, NieuweCode: string): HernoemPalletResponse; var Response: HernoemPalletResponse; begin Response := TAgent.Create(UiContext).HernoemPallet(OudeCode, NieuweCode, fEnkelDezeDnaCode); try if Response.Header.Status <> '200' then begin ToonPopupScherm(Response.Header.Omschrijving, 'Probeer opnieuw','') end else begin if NieuweCode = '' then begin VulGridMetToeleveringData(Response.DnaCodes); pcHernoemPallet.ActivePageIndex := 1; end else begin ToonPopupScherm(Response.Header.Omschrijving, 'OK','',19,-1,-1,clGreen); Self.ModalResult := mrHome; end; end; finally result := Response; Response.Free; end; if Self.ModalResult = mrHome then begin PostMessage(Self.Handle,WM_Close,0,0); (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(mrHome); end; end; procedure TfmHernoemPalletScherm.FormShow(Sender: TObject); begin btnCentraalOnder.Action := actHome; btnRechtsOnder.Action := actVolgende; pcHernoemPallet.ActivePageIndex := 0; edtOudeCode.Text := ''; edtNieuweCode.Text := ''; edtOudeCode.SetFocus; GridLeegmaken; inherited; end; procedure TfmHernoemPalletScherm.VulGridMetToeleveringData(DnaCodes: array of DnaCode); var DnaCodeTeller: Integer; begin GridLeegMaken(); for DnaCodeTeller := 0 to length(DnaCodes)-1 do begin sgToeleveringData.Rows[sgToeleveringData.RowCount-1].Add(TCommonFunctions.VerkorteDnaCode(DnaCodes[DnaCodeTeller].DnaCode)); sgToeleveringData.RowCount := sgToeleveringData.RowCount + 1; end; if sgToeleveringData.RowCount > 2 then sgToeleveringData.RowCount := sgToeleveringData.RowCount - 1; end; procedure TfmHernoemPalletScherm.GridLeegmaken; var i: Integer; begin for i := 1 to sgToeleveringData.RowCount do sgToeleveringData.Rows[i].Clear; sgToeleveringData.RowCount := 2; end; end.