Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit frmUbahPassword;
- 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.Edit, FMX.Layouts, System.JSON, REST.Client, REST.Response.Adapter;
- type
- TFormUbahPassword = class(TForm)
- VertScrollBox1: TVertScrollBox;
- MainLayout1: TLayout;
- ToolBar1: TToolBar;
- Label1: TLabel;
- Panel1: TPanel;
- Panel2: TPanel;
- EOldPass: TEdit;
- Button1: TButton;
- AniIndicator1: TAniIndicator;
- SpeedButton1: TSpeedButton;
- SpeedButton2: TSpeedButton;
- Panel3: TPanel;
- Panel4: TPanel;
- ENewPass: TEdit;
- SpeedButton3: TSpeedButton;
- procedure FormCreate(Sender: TObject);
- procedure FormFocusChanged(Sender: TObject);
- procedure FormVirtualKeyboardHidden(Sender: TObject;
- KeyboardVisible: Boolean; const Bounds: TRect);
- procedure FormVirtualKeyboardShown(Sender: TObject;
- KeyboardVisible: Boolean; const Bounds: TRect);
- procedure SpeedButton1Click(Sender: TObject);
- procedure SpeedButton3Click(Sender: TObject);
- procedure SpeedButton2Click(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- FKBBounds: TRectF;
- FNeedOffset: Boolean;
- ReqPassword : TRESTExecutionThread;
- procedure CalcContentBoundsProc(Sender: TObject;
- var ContentBounds: TRectF);
- procedure RestorePosition;
- procedure UpdateKBBounds;
- procedure OnPasswordTerminatedHandler(Sender:TObject);
- procedure OnPasswordCompletedHandler;
- public
- { Public declarations }
- end;
- var
- FormUbahPassword: TFormUbahPassword;
- implementation
- {$R *.fmx}
- uses System.Math, frmMain, DataMgr;
- procedure TFormUbahPassword.FormCreate(Sender: TObject);
- begin
- VertScrollBox1.OnCalcContentBounds := CalcContentBoundsProc;
- end;
- procedure TFormUbahPassword.FormFocusChanged(Sender: TObject);
- begin
- UpdateKBBounds;
- end;
- procedure TFormUbahPassword.FormVirtualKeyboardHidden(Sender: TObject;
- KeyboardVisible: Boolean; const Bounds: TRect);
- begin
- FKBBounds.Create(0, 0, 0, 0);
- FNeedOffset := False;
- RestorePosition;
- end;
- procedure TFormUbahPassword.FormVirtualKeyboardShown(Sender: TObject;
- KeyboardVisible: Boolean; const Bounds: TRect);
- begin
- FKBBounds := TRectF.Create(Bounds);
- FKBBounds.TopLeft := ScreenToClient(FKBBounds.TopLeft);
- FKBBounds.BottomRight := ScreenToClient(FKBBounds.BottomRight);
- UpdateKBBounds;
- end;
- procedure TFormUbahPassword.Button1Click(Sender: TObject);
- var
- sOldPass:String;
- sNewPass:String;
- ObjPass:TJSONObject;
- UserID:TJSONValue;
- SessionID:TJSONValue;
- begin
- if ReqPassword=nil then
- begin
- sOldPass:=EOldPass.Text;
- sNewPass:=ENewPass.Text;
- if (sOldPass='') OR (sNewPass='') then
- begin
- ShowMessage('Masukkan Password Lama dan Password Baru');
- end
- else
- begin
- try
- //ENewPass.Enabled:=False;
- //EOldPass.Enabled:=False;
- //DataManager.ObjUser:=nil;
- // UserID:=ObjUser.GetValue('iduser');
- //SessionID:=ObjUser.GetValue('session_id');
- UserID:=ObjPass.GetValue('iduser');
- SessionID:=ObjPass.GetValue('session_id');
- DataManager.RESTRequestPassword.Params.Clear;
- DataManager.RESTRequestPassword.Params.AddItem('user_id', UserID.Value);
- DataManager.RESTRequestPassword.Params.AddItem('session_id', SessionID.Value);
- DataManager.RESTRequestPassword.Params.AddItem('old_password', EOldPass.Text);
- DataManager.RESTRequestPassword.Params.AddItem('new_password', ENewPass.Text);
- ReqPassword := DataManager.RESTRequestPassword.ExecuteAsync(OnPasswordCompletedHandler, True, True);
- ReqPassword.OnTerminate:=OnPasswordTerminatedHandler;
- except on E: Exception do
- begin
- ShowMessage('Ubah Password Gagal 1 '+E.Message);
- end;
- end;
- end;
- end;
- end;
- procedure TFormUbahPassword.OnPasswordTerminatedHandler(Sender:TObject);
- begin
- ReqPassword:=nil;
- // ENewPass.Enabled:=True;
- // EOldPass.Enabled:=True;
- end;
- procedure TFormUbahPassword.OnPasswordCompletedHandler;
- var
- jObj:TJSONObject;
- jStatus:TJSONValue;
- jMsg:TJSONValue;
- begin
- try
- //EOldPass.Enabled:=True;
- //ENewPass.Enabled:=True;
- jObj := DataManager.RESTResponsePassword.JSONValue As TJSONObject;
- jStatus := jObj.GetValue('status');
- jMsg := jObj.GetValue('message');
- if jStatus.ToString='1' then
- begin
- ShowMessage('Password berhasil diubah');
- end
- else
- ShowMessage('Ubah Password Gagal.2 ' + jMsg.ToString);
- //tracing pertama
- except on E: Exception do
- ShowMessage('Ubah Password Gagal.3 ' + E.Message);
- end;
- end;
- procedure TFormUbahPassword.CalcContentBoundsProc(Sender: TObject;
- var ContentBounds: TRectF);
- begin
- if FNeedOffset and (FKBBounds.Top > 0) then
- begin
- ContentBounds.Bottom := Max(ContentBounds.Bottom,
- 2 * ClientHeight - FKBBounds.Top);
- end;
- end;
- procedure TFormUbahPassword.RestorePosition;
- begin
- VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X, 0);
- MainLayout1.Align := TAlignLayout.Client;
- VertScrollBox1.RealignContent;
- end;
- procedure TFormUbahPassword.SpeedButton1Click(Sender: TObject);
- begin
- Close;
- end;
- procedure TFormUbahPassword.SpeedButton2Click(Sender: TObject);
- begin
- EOldPass.Password := not EOldPass.Password;
- end;
- procedure TFormUbahPassword.SpeedButton3Click(Sender: TObject);
- begin
- ENewPass.Password := not ENewPass.Password;
- end;
- procedure TFormUbahPassword.UpdateKBBounds;
- var
- LFocused : TControl;
- LFocusRect: TRectF;
- begin
- FNeedOffset := False;
- if Assigned(Focused) then
- begin
- LFocused := TControl(Focused.GetObject);
- LFocusRect := LFocused.AbsoluteRect;
- LFocusRect.Offset(VertScrollBox1.ViewportPosition);
- if (LFocusRect.IntersectsWith(TRectF.Create(FKBBounds))) and
- (LFocusRect.Bottom > FKBBounds.Top) then
- begin
- FNeedOffset := True;
- MainLayout1.Align := TAlignLayout.Horizontal;
- VertScrollBox1.RealignContent;
- Application.ProcessMessages;
- VertScrollBox1.ViewportPosition :=
- PointF(VertScrollBox1.ViewportPosition.X,
- LFocusRect.Bottom - FKBBounds.Top);
- end;
- end;
- if not FNeedOffset then
- RestorePosition;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement