ITを駆使する猫エンジニア

 こんにちは、童爺です。

 

 今日は休むと言いつつ、どうしても気に入らない箇所があったので修正しました。

 

 元のダイアログ。

 

 で、新しいダイアログ。

 

 です。

 

 キャプションの部分がプロジェクト名だったのを、新しいダイアログを作成し、日本語に修正しました。

 

 以下コード。

unit MMS_CommonDialog;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Controls.Presentation, FMX.Layouts;

type
  TForm_MsgDlg = class(TForm)
    Layout_Button: TLayout;
    Button_MsgDlg: TButton;
    Label_MsgDlg: TLabel;
    procedure Button_MsgDlgClick(Sender: TObject);
  private
    { private 宣言 }
  public
    { public 宣言 }
    constructor Create(AOwner: TComponent; const Msg: String); reintroduce;
  end;

var
  Form_MsgDlg: TForm_MsgDlg;

implementation

{$R *.fmx}

procedure TForm_MsgDlg.Button_MsgDlgClick(Sender: TObject);
begin
  Close;
end;

constructor TForm_MsgDlg.Create(AOwner: TComponent; const Msg: String);
begin
  inherited Create(AOwner);

  Label_MsgDlg.Text := Msg;
end;

end.

 合わせて本体の方も修正しました。

 

 以下コード。

unit UserLoginMain;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Edit,
  FMX.Controls.Presentation, FMX.StdCtrls, FMX.Layouts, FireDAC.Stan.Intf,
  FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf,
  FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys,
  FireDAC.Phys.SQLite, FireDAC.Phys.SQLiteDef, FireDAC.Stan.ExprFuncs,
  FireDAC.FMXUI.Wait, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf,
  FireDAC.DApt, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client;

type
  TForm_UserLoginMain = class(TForm)
    Layout_Header: TLayout;
    Layout_UserName: TLayout;
    Layout_Password: TLayout;
    Layout_Login: TLayout;
    Layout_NewUserCreate: TLayout;
    Layout_Footer: TLayout;
    Label_Caption: TLabel;
    Label_UserName: TLabel;
    Label_Password: TLabel;
    Edit_UserName: TEdit;
    Edit_Password: TEdit;
    Button_Login: TButton;
    Button_NewUserCreate: TButton;
    Button_Close: TButton;
    FDConnection_UserLoginMain: TFDConnection;
    FDQuery_UserLoginMain: TFDQuery;
    procedure Button_LoginClick(Sender: TObject);
    procedure Button_NewUserCreateClick(Sender: TObject);
    procedure Button_CloseClick(Sender: TObject);
  private
    { private 宣言 }
  public
    { public 宣言 }
  end;

var
  Form_UserLoginMain: TForm_UserLoginMain;

implementation

{$R *.fmx}

uses
  System.Hash,
  MMS_CommonDialog;

procedure TForm_UserLoginMain.Button_NewUserCreateClick(Sender: TObject);
begin
//後で追加
end;

procedure TForm_UserLoginMain.Button_CloseClick(Sender: TObject);
begin
  Close;
end;

procedure TForm_UserLoginMain.Button_LoginClick(Sender: TObject);
var
  result: Integer;
  MD5: THashMD5;
  UserName: String;
  Password: String;
  administrator: String;
  admin: String;
  root: String;
  MsgDlg: TForm_MsgDlg;
begin

  result := 0;
  UserName := Edit_UserName.Text;
  Password := Edit_Password.Text;

  //工事中

  try
    try
      FDConnection_UserLoginMain.Open;

      FDQuery_UserLoginMain.Params.ParamByName('input_username').AsString := UserName;

      MD5 := THashMD5.Create;
      MD5.Update(Password);
      FDQuery_UserLoginMain.Params.ParamByName('input_password').AsString := MD5.HashAsString;
      FDQuery_UserLoginMain.Open();
      result := FDQuery_UserLoginMain.RecordCount;
    except
      on e: Exception do
      begin
        MsgDlg := TForm_MsgDlg.Create(self, 'Error:' + e.Message);
        MsgDlg.ShowModal;
      end;
    end;
  finally
    FDQuery_UserLoginMain.Close;
    FDConnection_UserLoginMain.Close;
  end;

  //仮の処理 工事中
  if result > 0 then
  begin
    administrator := 'administrator';
    admin := 'admin';
    root := 'root';
    if (AnsiCompareText(UserName, administrator) = 0) or
       (AnsiCompareText(UserName, admin) = 0) or
       (AnsiCompareText(UserName, root) = 0) then
    begin
      //工事中
        MsgDlg := TForm_MsgDlg.Create(self, 'OK! 管理画面へGo!');
        MsgDlg.ShowModal;
    end
    else
    begin
      //工事中
        MsgDlg := TForm_MsgDlg.Create(self, 'OK! ユーザ詳細へGo!');
        MsgDlg.ShowModal;
    end;
  end
  else
  begin
        MsgDlg := TForm_MsgDlg.Create(self, 'ユーザー名またはパスワードが違います。');
        MsgDlg.ShowModal;
  end;

end;

end.

 以上です。

 

 他のMessage関連のダイアログ探すより早いかなーと思って。

 

 簡単に修正できそうだったので、サクッと作っちゃいました。

 

 あーでも、少し変更かけるかもしれません。

 

 大した変更じゃないですが。


 そんな感じですかね。

 


 

 それではまた。

 

 でわでわ。