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, UserAgent; 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 FUserAgent: TUserAgent; procedure Login(); public Constructor Create(AOwner: TComponent; Navigator: TFormMain; ApplicationContext: TApplicationContext; UserAgent: TUserAgent); end; implementation uses Util; {$R *.dfm} constructor TFormLogin.Create(AOwner: TComponent; Navigator: TFormMain; ApplicationContext: TApplicationContext; UserAgent: TUserAgent); begin inherited Create(AOwner, Navigator, ApplicationContext); self.FUserAgent := UserAgent; 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 := (Sender as TEdit).Text <> EmptyStr; PanelButtonEnableChange(PanelLogIn); end; procedure TFormLogin.Login(); var ErrorMessage: string; begin FUserAgent.GebruikerAanmelden(EditGebruikersnaam.Text, EditWachtwoord.Text, self.ApplicationContext.UserContext); if ApplicationContext.UserContext.IsOK then begin self.Navigator.NavigeerNaar(Main.NAVZOEKPRODUCTEN); end else begin // Login gefaald ErrorMessage := ApplicationContext.UserContext.ErrorMessage; if ApplicationContext.UserContext.InternalErrorMessage <> '' then begin ErrorMessage := ErrorMessage + sLineBreak + ApplicationContext.UserContext.InternalErrorMessage; end; if MessageDlg(ErrorMessage, TMsgDlgType.mtInformation, [mbRetry, mbCancel], 0, mbCancel) = mrRetry then begin // Retry gedrukt Login(); end; end; end; end.