Index: VerpakkingsDefinitie/UI/LogInScherm.pas =================================================================== diff -u -r550 -r551 --- VerpakkingsDefinitie/UI/LogInScherm.pas (.../LogInScherm.pas) (revision 550) +++ VerpakkingsDefinitie/UI/LogInScherm.pas (.../LogInScherm.pas) (revision 551) @@ -15,35 +15,106 @@ EditGebruikersnaam: TEdit; Label3: TLabel; EditWachtwoord: TEdit; - Panel1: TPanel; - - procedure Panel1Click(Sender: TObject); + PanelLogIn: TPanel; + procedure PanelLogInClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure EditGebruikersnaamChange(Sender: TObject); + procedure PanelLogInMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure PanelLogInMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure PanelButtonEnableChange(Sender: TPanel); private - { Private declarations } + procedure Login(); public { Public declarations } end; implementation uses - Main, - UserServerService, Agent; + Main, Util, + UserServerService, Agent, ApplicationContext; {$R *.dfm} -procedure TFormLogin.Panel1Click(Sender: TObject); +procedure TFormLogin.FormCreate(Sender: TObject); +begin + EditWachtwoord.PasswordChar := '*'; // Verberg paswoord + PanelLogIn.Enabled := false; + PanelButtonEnableChange(PanelLogIn); +end; + +procedure TFormLogin.PanelLogInClick(Sender: TObject); +begin + Login(); +end; + +// Indrukken van button simuleren op panel: http://www.festra.com/wwwboard/messages/1006.html +procedure TFormLogin.PanelLogInMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + (Sender as TPanel).BevelOuter := bvLowered; +end; + +procedure TFormLogin.PanelLogInMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + (Sender as TPanel).BevelOuter := bvRaised; +end; + +procedure TFormLogin.PanelButtonEnableChange(Sender: TPanel); +begin + if Sender.Enabled then + begin + Sender.ParentBackground := True; // Neem kleur van parent (default) + Sender.Font.Color := clWhite; + end + else + begin + Sender.ParentBackground := false; + // Neem kleur van parent en maak donkerder + Sender.Color := TColor(TUtilColorLightener.LightenColor(Vcl.Graphics.ColorToRGB(PanelLogIn.Parent.Brush.Color), 70)); + Sender.Font.Color := clGray; + end; + +end; + +procedure TFormLogin.EditGebruikersnaamChange(Sender: TObject); +begin + // We kijken enkel naar gebruikersnaam, want leeg ww zou geldig kunnen zijn + PanelLogIn.Enabled := EditGebruikersnaam.Text <> EmptyStr; + PanelButtonEnableChange(PanelLogIn); +end; + +procedure TFormLogin.Login(); var - Response: PxStatus; - fAgent: TAgent; + Agent: TAgent; + ErrorMessage: string; begin - fAgent := TAgent.Create(); - //Response := fAgent.GebruikerAanmelden(EditGebruikersnaam.Text,EditWachtwoord.Text); - Response := fAgent.GebruikerAanmelden('tve','tve1502'); - ShowMessage(Response.ToString); + Agent := nil; + try + Agent := TAgent.Create(); + Agent.GebruikerAanmelden(EditGebruikersnaam.Text, EditWachtwoord.Text, ApplicationContextObj.UserServerServiceContext); - // TODO controleren of login succesvol was en waarden invullen in ApplicationContext - //(self.Parent.Parent as TFormMain).NavigeerNaar(Main.FORMZOEKPRODUCTENID); + if ApplicationContextObj.UserServerServiceContext.IsOK then + begin + (self.Navigator as TFormMain).NavigeerNaar(Main.NAVZOEKPRODUCTEN); + end + else + begin + // Login gefaald + ErrorMessage := ApplicationContextObj.UserServerServiceContext.ErrorMessage; + if ApplicationContextObj.UserServerServiceContext.InternalErrorMessage <> '' then + begin + ErrorMessage := ErrorMessage + sLineBreak + ApplicationContextObj.UserServerServiceContext.InternalErrorMessage; + end; + + if MessageDlg(ErrorMessage, TMsgDlgType.mtInformation, [mbRetry, mbCancel], 0, mbCancel) = mrRetry then + begin + // Retry gedrukt + Login(); + end; + end; + finally + Agent.Free(); + end; end; end.