⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 login.pas

📁 PatientRunner 20 Source
💻 PAS
字号:
{ *************************************************************************** }
{                                                                             }
{ PatientRunner                                                               }
{                                                                             }
{ Copyright (c) 2002-2005 IgD Software, LLC                                   }
{                                                                             }
{ This file may be distributed and/or modified under the terms of the GNU     }
{ General Public License (GPL) version 2 as published by the Free Software    }
{ Foundation and appearing at http://www.gnu.org/licenses/gpl.html.           }
{                                                                             }
{ *************************************************************************** }

unit Login;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TLoginForm = class(TForm)
    UsernameEdit: TEdit;
    PasswordEdit: TEdit;
    HostnameEdit: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    DatabasenameEdit: TEdit;
    ExitButton: TButton;
    LoginButton: TButton;
    procedure LoginButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ExitButtonClick(Sender: TObject);
  private
    LoginOk: boolean;
    RetryCount: integer;
  public
  end;

var
  LoginForm: TLoginForm;

implementation

{$R *.dfm}

uses Main, StrUtils, Registry;

procedure TLoginForm.LoginButtonClick(Sender: TObject);
var Save_Cursor: TCursor;
begin
  HostnameEdit.Text:=TrimRight(HostnameEdit.Text);
  UsernameEdit.Text:=TrimRight(UsernameEdit.Text);
  PasswordEdit.Text:=TrimRight(PasswordEdit.Text);
  DatabasenameEdit.Text:=TrimRight(DatabasenameEdit.Text);

  if (UsernameEdit.Text='') or (HostnameEdit.Text='') or (DatabasenameEdit.Text='') then
  begin
    MessageDlg('You must enter a valid database, hostname, username and password to log on to PatientRunner!', mtError,
      [mbOk], 0);
    Exit;
  end;

  Save_Cursor:=Screen.Cursor;
  Screen.Cursor:=crHourGlass;
  with MainForm.SQLConnection do
  begin
    LoginPrompt := False;

    //For debugging
    //Params.Values['Database'] := 'patientrunner';
    //Params.Values['HostName'] := 'localhost';

    Params.Values['Database'] := DatabasenameEdit.Text;
    Params.Values['HostName'] := HostnameEdit.Text;
    Params.Values['User_Name'] := UsernameEdit.Text;
    Params.Values['Password'] := PasswordEdit.Text;

    try
      Connected:=True;
      LoginOk:=True;
    except on E: Exception do
      begin
        inc(RetryCount);
        MessageDlg('Error connecting to host: '+E.Message, mtError, [mbOk], 0);
        LoginOk:=False;
      end;
    end;
    Screen.Cursor := Save_Cursor;

    if LoginOk or (RetryCount>=3) then LoginForm.Close;
  end; //with
end;

procedure TLoginForm.FormCreate(Sender: TObject);
var fIni: TRegIniFile;
    i: integer;
begin
  Caption:=VersionInfo+' Login';

  LoginOk:=False;
  RetryCount:=0;

  fIni:=TRegIniFile.Create('');
  with fIni do
  begin
    RootKey:=HKEY_CURRENT_USER;
    //DatabasenameEdit.Text:=ReadString('Software\PatientRunner', 'Databasename', '');
    //HostnameEdit.Text:=ReadString('Software\PatientRunner', 'Hostname', '');
    UsernameEdit.Text:=ReadString('Software\PatientRunner', 'Username', 'root');
    Free;
  end;

  for i := 1 to ParamCount do
  begin
    //if AnsiContainsText(ParamStr(i), '/D=') then
    //  DatabasenameEdit.Text:=AnsiReplaceText(ParamStr(i), '/D=', '');
    //if AnsiContainsText(ParamStr(i), '/S=') then
    //  HostnameEdit.Text:=AnsiReplaceText(ParamStr(i), '/S=', '');
    if AnsiContainsText(ParamStr(i), '/L=') then
      UsernameEdit.Text:=AnsiReplaceText(ParamStr(i), '/L=', '');
    if AnsiContainsText(ParamStr(i), '/P=') then
      PasswordEdit.Text:=AnsiReplaceText(ParamStr(i), '/P=', '');
  end;
end;

procedure TLoginForm.FormClose(Sender: TObject; var Action: TCloseAction);
var fIni: TRegIniFile;
begin
  if LoginOk then
  begin
    if DatabasenameEdit.Modified or HostnameEdit.Modified or UsernameEdit.Modified then
    begin
      fIni:=TRegIniFile.Create('');
      with fIni do
      begin
        RootKey:=HKEY_CURRENT_USER;
        //if DatabasenameEdit.Modified then WriteString('Software\PatientRunner', 'Databasename', DatabasenameEdit.Text);
        //if HostnameEdit.Modified then WriteString('Software\PatientRunner', 'Hostname', HostnameEdit.Text);
        if UsernameEdit.Modified then WriteString('Software\PatientRunner', 'Username', UsernameEdit.Text);
        Free;
      end;
    end;

    ModalResult:=mrOK
  end
  else
    ModalResult:=mrCancel;
end;

procedure TLoginForm.ExitButtonClick(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -