unit Main; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Bde.DBTables, Vcl.Grids, Vcl.DBGrids, Vcl.OleCtrls, CACHEQUERYLib_TLB, TLLib_TLB, Vcl.OleServer, CacheActiveX_TLB, Vcl.StdCtrls, Datasnap.DBClient, UiContext, Vcl.ComCtrls, DnaCodeService, Vcl.ExtCtrls, GebruikerService, frameDnaCodes, frameGebruikers, frameKlantinstellingen; type TfmMain = class(TForm) pnlLinks: TPanel; pnlNaam: TPanel; pnlKnoppen: TPanel; pnlFrames: TPanel; frmGebruikers: TfrmGebruikers; pcFrames: TPageControl; tsDnaCodes: TTabSheet; tsGebruikers: TTabSheet; lblInitialen: TLabel; lblUitloggen: TLabel; lblWegwerppallet: TLabel; lblDnaCodes: TLabel; lblGebruikers: TLabel; frmDnaCodes: TfrmDnaCodes; tsKlantinstellingen: TTabSheet; frmKlantinstellingen: TfrmKlantinstellingen; procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure lblUitloggenClick(Sender: TObject); procedure lblDnaCodesClick(Sender: TObject); procedure lblGebruikersClick(Sender: TObject); procedure lblWegwerppalletClick(Sender: TObject); procedure frmDnaCodesbtnZoekenClick(Sender: TObject); private fUiContext: TUiContext; procedure HuidigeGebruikerAfmelden(); function GebruikerInloggen(): boolean; procedure ZetLinkseKnopGrijs(knopIndex: integer); public property UiContext: TUiContext Read fUiContext Write fUiContext; end; var fmMain: TfmMain; implementation uses Agent, System.StrUtils, LoginScherm; {$R *.dfm} procedure TfmMain.FormCreate(Sender: TObject); begin UiContext := TUiContext.Create(); if ParamStr(1) <> '' then UiContext.ServerName := Copy(ParamStr(1),Pos('=',ParamStr(1))+1,length(ParamStr(1))) else UiContext.ServerName := 'tve-w10'; end; procedure TfmMain.FormShow(Sender: TObject); var fLoginScherm: TfmLogin; fGebruikerAanmeldenResponse: GebruikerAanmeldenResponse; begin pcFrames.ActivePage := tsDnaCodes; if not GebruikerInloggen then Application.Terminate; end; procedure TfmMain.frmDnaCodesbtnZoekenClick(Sender: TObject); begin frmDnaCodes.btnZoekenClick(Sender); end; procedure TfmMain.HuidigeGebruikerAfmelden; begin TAgent.Create(UiContext).GebruikerAfmelden(UiContext.Initialen, UiContext.LoginCode); UiContext.Initialen := ''; UiContext.LoginCode := ''; lblInitialen.Caption := ''; end; procedure TfmMain.lblDnaCodesClick(Sender: TObject); begin pcFrames.ActivePage := tsDnaCodes; ZetLinkseKnopGrijs(0) end; procedure TfmMain.lblGebruikersClick(Sender: TObject); begin frmGebruikers.ZoekAlleGebruikers; pcFrames.ActivePage := tsGebruikers; ZetLinkseKnopGrijs(1) end; procedure TfmMain.lblWegwerppalletClick(Sender: TObject); begin frmKlantinstellingen.ZoekAlleKlantinstellingen; pcFrames.ActivePage := tsKlantinstellingen; ZetLinkseKnopGrijs(2) end; procedure TfmMain.lblUitloggenClick(Sender: TObject); begin HuidigeGebruikerAfmelden(); GebruikerInloggen; end; function TfmMain.GebruikerInloggen(): boolean; var fLoginScherm: TfmLogin; fGebruikerAanmeldenResponse: GebruikerAanmeldenResponse; fInloggenGeslaagd: boolean; begin fInloggenGeslaagd := true; fLoginScherm := TfmLogin.Create(self); fLoginScherm.ShowModal; if fLoginScherm.ModalResult = mrOk then begin fGebruikerAanmeldenResponse := TAgent.Create(UiContext).GebruikerAanmelden(fLoginScherm.edtInitialen.Text, fLoginScherm.edtLoginCode.Text); try if fGebruikerAanmeldenResponse.Header.Status <> '200' then begin ShowMessage(fGebruikerAanmeldenResponse.Header.Omschrijving); fInloggenGeslaagd := false; end else begin UiContext.Initialen := fLoginScherm.edtInitialen.Text; UiContext.LoginCode := fLoginScherm.edtLoginCode.Text; lblInitialen.Caption := UiContext.Initialen; Self.Caption := 'PlanScan '+UiContext.Initialen; pcFrames.ActivePageIndex := 0; end; except on E: Exception do begin ShowMessage(E.Message); fInloggenGeslaagd := false; end; end; fGebruikerAanmeldenResponse.Free; end else begin fInloggenGeslaagd := false; end; fLoginScherm.Free; result := fInloggenGeslaagd; end; procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction); begin HuidigeGebruikerAfmelden(); end; procedure TfmMain.ZetLinkseKnopGrijs(knopIndex: integer); begin lblDnaCodes.Color := $001717CD; lblGebruikers.Color := $001717CD; lblWegwerpPallet.Color := $001717CD; case knopIndex of 0: lblDnaCodes.Color := clGray; 1: lblGebruikers.Color := clGray; 2: lblWegwerpPallet.Color := clGray; end; Repaint; end; end.