おはようございます、童爺です。
今回は、新規ユーザ作成画面です。
この画面は、ログイン画面と会員管理画面の両方から呼ばれます。
では、以下に実行時の画面を張ります。
次に、デザイン画面です。
コードを以下に記述します。
unit NewUserAppend;
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, FMX.ListBox, FMX.Edit,
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.Comp.Client, Data.DB, FireDAC.DApt, System.Rtti,
System.Bindings.Outputs, Fmx.Bind.Editors, Data.Bind.EngExt,
Fmx.Bind.DBEngExt, Data.Bind.Components, FireDAC.Comp.DataSet,
Data.Bind.DBScope, Data.Bind.Controls, Fmx.Bind.Navigator, FMX.DateTimeCtrls;
type
TForm_NewUserAppend = class(TForm)
Layout_Header: TLayout;
Label_Cation: TLabel;
Layout_ID: TLayout;
Layout_LastName: TLayout;
Layout_FirstName: TLayout;
Layout_Password: TLayout;
Layout_RePassword: TLayout;
Layout_Birthday: TLayout;
Layout_Ken: TLayout;
Layout_Footer: TLayout;
Label_ID: TLabel;
Label_LastName: TLabel;
Label_FirstName: TLabel;
Label_Password: TLabel;
Label_RePassword: TLabel;
Label_Birthday: TLabel;
Label_Ken: TLabel;
Layout_BtnFooter: TLayout;
Button_Resist: TButton;
Button_Cancel: TButton;
Edit_ID: TEdit;
Edit_LastName: TEdit;
Edit_FirstName: TEdit;
Edit_Password: TEdit;
Edit_RePassword: TEdit;
ComboBox_Ken: TComboBox;
Layout_UserName: TLayout;
Label_UserName: TLabel;
Edit_UserName: TEdit;
FDConnection_NewUserAppend: TFDConnection;
DateEdit_Birthday: TDateEdit;
FDQuery_NewUserAppend: TFDQuery;
BindSourceken: TBindSourceDB;
FDTableken: TFDTable;
BindingsList_Ken: TBindingsList;
LinkFillControlToField1: TLinkFillControlToField;
procedure Button_CancelClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure Button_ResistClick(Sender: TObject);
private
{ private 宣言 }
public
{ public 宣言 }
end;
var
Form_NewUserAppend: TForm_NewUserAppend;
implementation
{$R *.fmx}
uses
System.Hash,
MMS_CommonDialog;
procedure TForm_NewUserAppend.Button_CancelClick(Sender: TObject);
begin
Close;
end;
procedure TForm_NewUserAppend.Button_ResistClick(Sender: TObject);
var
MsgDlg: TForm_MsgDlg;
MD5: THashMD5;
begin
if Edit_Id.Text = '' then
begin
MsgDlg := TForm_MsgDlg.Create(self, 'IDを入力してください。');
MsgDlg.ShowModal;
exit;
end;
if Edit_UserName.Text = '' then
begin
MsgDlg := TForm_MsgDlg.Create(self, 'ユーザ名を入力してください。');
MsgDlg.ShowModal;
exit;
end;
if Edit_LastName.Text = '' then
begin
MsgDlg := TForm_MsgDlg.Create(self, '苗字を入力してください。');
MsgDlg.ShowModal;
exit;
end;
if Edit_FirstName.Text = '' then
begin
MsgDlg := TForm_MsgDlg.Create(self, '名を入力してください。');
MsgDlg.ShowModal;
exit;
end;
if Edit_Password.Text = '' then
begin
MsgDlg := TForm_MsgDlg.Create(self, 'パスワードを入力してください。');
MsgDlg.ShowModal;
exit;
end;
if Edit_RePassword.Text = '' then
begin
MsgDlg := TForm_MsgDlg.Create(self, 'パスワード再入力を入力してください。');
MsgDlg.ShowModal;
exit;
end;
if Edit_Password.Text <> Edit_RePAssword.Text then
begin
MsgDlg := TForm_MsgDlg.Create(self, 'パスワードが一致しません。');
MsgDlg.ShowModal;
exit;
end;
if ComboBox_Ken.ItemIndex = -1 then
begin
MsgDlg := TForm_MsgDlg.Create(self, '県名を選択してください。');
MsgDlg.ShowModal;
exit;
end;
try
try
FDQuery_NewUserAppend.Params.ParamByName('Input_id').AsInteger := StrToInt(Edit_ID.Text);
FDQuery_NewUserAppend.Params.ParamByName('Input_username').AsString := Edit_UserName.Text;
MD5 := THashMD5.Create;
MD5.Update(Edit_Password.Text);
FDQuery_NewUserAppend.Params.ParamByName('Input_password').AsString := MD5.HashAsString;
FDQuery_NewUserAppend.Params.ParamByName('Input_last_name').AsString := Edit_LastName.Text;
FDQuery_NewUserAppend.Params.ParamByName('Input_first_name').AsString := Edit_FirstName.Text;
FDQuery_NewUserAppend.Params.ParamByName('Input_birthday').AsString := DateEdit_Birthday.Text;
FDQuery_NewUserAppend.Params.ParamByName('Input_ken').AsInteger := ComboBox_Ken.ItemIndex + 1;
FDQuery_NewUserAppend.ExecSQL;
except
on e: Exception do
begin
FDQuery_NewUserAppend.Close;
MsgDlg := TForm_MsgDlg.Create(self, 'Error:' + e.Message);
MsgDlg.ShowModal;
raise;
end;
end;
finally
FDQuery_NewUserAppend.Close;
end;
Close;
end;
procedure TForm_NewUserAppend.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
FDTableken.Close;
FDConnection_NewUSerAppend.Close;
end;
procedure TForm_NewUserAppend.FormCreate(Sender: TObject);
begin
FDConnection_NewUSerAppend.Open();
FDTableken.Open();
end;
end.
こんな感じです。
字数制限に引っかかる為、今回は此処迄。
それでですね、「ここが違う」とか「もっといいやり方がある」と言う方は、コメントなりTwitterに投稿して頂けると有り難いです。
どんな些細な事でも構いません。(疑問点でもOK)
出来る限り対応していきたいと思います。
それではまた。
でわでわ。