unit PalletScherm; 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.ExtCtrls, Vcl.Imaging.pngimage; type TfmPalletScherm = class(TfmDrieKnoppenScherm) lblScanPallet: TLabel; imgPallet: TImage; edtPallet: TEdit; procedure FormShow(Sender: TObject); procedure actHomeExecute(Sender: TObject); procedure actVolgendeExecute(Sender: TObject); procedure edtPalletKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private procedure SetContext; public { Public declarations } end; var fmPalletScherm: TfmPalletScherm; implementation uses DnaCodeService, UiContext; {$R *.dfm} procedure TfmPalletScherm.actHomeExecute(Sender: TObject); begin inherited; Self.ModalResult := mrHome; end; procedure TfmPalletScherm.actVolgendeExecute(Sender: TObject); var Service: DnaCodeServiceSoap; fValideerPalletCodeRequest: ValideerPalletCodeRequest; fValideerPalletCodeResponse: ValideerPalletCodeResponse; Header: RequestHeader; fZoekViaPalletCodeRequest: ZoekViaPalletCodeRequest; fZoekViaPalletCodeResponse: ZoekViaPalletCodeResponse; fPalletGevalideerd: boolean; begin fPalletGevalideerd := false; Service := DnaCodeService.GetDnaCodeServiceSoap(); // pallet code valideren fValideerPalletCodeRequest := ValideerPalletCodeRequest.Create; Header := RequestHeader.Create; try Header.Initialen := UiContext.Initialen; Header.ComputerNaam := ComputerName(); fValideerPalletCodeRequest.Header := Header; fValideerPalletCodeRequest.PalletCode := edtPallet.Text; fValideerPalletCodeResponse := Service.ValideerPalletCode(fValideerPalletCodeRequest); try if fValideerPalletCodeResponse.Header.Status <> '200' then begin Self.ModalResult := mrPallet; ToonPopupScherm(fValideerPalletCodeResponse.Header.Omschrijving, 'Scan opnieuw'); edtPallet.Text := ''; SetContext; end else begin fPalletGevalideerd := true; end; finally fValideerPalletCodeResponse.Free; end; finally fValideerPalletCodeRequest.Free; end; //checken of pallet in gebruik is indien het vorige geslaagd is if fPalletGevalideerd then begin fZoekViaPalletCodeRequest := ZoekViaPalletCodeRequest.Create; Header := RequestHeader.Create; try Header.Initialen := UiContext.Initialen; Header.ComputerNaam := ComputerName(); fZoekViaPalletCodeRequest.Header := Header; fZoekViaPalletCodeRequest.PalletCode := UiContext.Pallet; fZoekViaPalletCodeResponse := Service.ZoekViaPalletCode(fZoekViaPalletCodeRequest); try if fZoekViaPalletCodeResponse.Header.Status = '200' then begin UiContext.Toelevering := fZoekViaPalletCodeResponse.DnaCodes[0].Toelevering; Self.ModalResult := mrBestaandePallet; end else UiContext.Toelevering := ''; Self.ModalResult := mrDnaCode; finally fZoekViaPalletCodeResponse.Free; end; finally fZoekViaPalletCodeRequest.Free; end; end else begin Self.ModalResult := mrPallet; end; end; procedure TfmPalletScherm.edtPalletKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin inherited; SetContext; if Key = VK_RETURN then begin actVolgende.Execute; Key := 0; end; end; procedure TfmPalletScherm.FormShow(Sender: TObject); begin btnLinksOnder.Action := nil; btnCentraalOnder.Action := actHome; btnRechtsOnder.Action := actVolgende; edtPallet.Text := ''; SetContext; ActiveControl := edtPallet; inherited; end; procedure TfmPalletScherm.SetContext; begin UiContext.Pallet := edtPallet.Text; end; end.