unit LoginScherm; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Main, ApplicationContext, Subscherm, Agent; type TFormLogin = class(TFormSubscherm) Label1: TLabel; Label2: TLabel; EditGebruikersnaam: TEdit; Label3: TLabel; EditWachtwoord: TEdit; 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 FAgent: TAgent; procedure Login(); public Constructor Create(AOwner: TComponent; Navigator: TFormMain; ApplicationContext: TApplicationContext; Agent: TAgent); overload; end; implementation uses Util, UserServerService; {$R *.dfm} constructor TFormLogin.Create(AOwner: TComponent; Navigator: TFormMain; ApplicationContext: TApplicationContext; Agent: TAgent); begin inherited Create(AOwner, Navigator, ApplicationContext); self.FAgent := Agent; end; 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 ErrorMessage: string; begin FAgent.GebruikerAanmelden(EditGebruikersnaam.Text, EditWachtwoord.Text, ApplicationContextObj.UserServerServiceContext); 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; end; end.