Advertisement
Yudhizth

UbahPassword

Jan 21st, 2016
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.54 KB | None | 0 0
  1. unit frmUbahPassword;
  2.  
  3. interface
  4.  
  5. uses
  6.   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  7.   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  8.   FMX.Controls.Presentation, FMX.Edit, FMX.Layouts, System.JSON, REST.Client, REST.Response.Adapter;
  9.  
  10. type
  11.   TFormUbahPassword = class(TForm)
  12.     VertScrollBox1: TVertScrollBox;
  13.     MainLayout1: TLayout;
  14.     ToolBar1: TToolBar;
  15.     Label1: TLabel;
  16.     Panel1: TPanel;
  17.     Panel2: TPanel;
  18.     EOldPass: TEdit;
  19.     Button1: TButton;
  20.     AniIndicator1: TAniIndicator;
  21.     SpeedButton1: TSpeedButton;
  22.     SpeedButton2: TSpeedButton;
  23.     Panel3: TPanel;
  24.     Panel4: TPanel;
  25.     ENewPass: TEdit;
  26.     SpeedButton3: TSpeedButton;
  27.     procedure FormCreate(Sender: TObject);
  28.     procedure FormFocusChanged(Sender: TObject);
  29.     procedure FormVirtualKeyboardHidden(Sender: TObject;
  30.       KeyboardVisible: Boolean; const Bounds: TRect);
  31.     procedure FormVirtualKeyboardShown(Sender: TObject;
  32.       KeyboardVisible: Boolean; const Bounds: TRect);
  33.     procedure SpeedButton1Click(Sender: TObject);
  34.     procedure SpeedButton3Click(Sender: TObject);
  35.     procedure SpeedButton2Click(Sender: TObject);
  36.     procedure Button1Click(Sender: TObject);
  37.   private
  38.     { Private declarations }
  39.     FKBBounds: TRectF;
  40.     FNeedOffset: Boolean;
  41.     ReqPassword : TRESTExecutionThread;
  42.     procedure CalcContentBoundsProc(Sender: TObject;
  43.                                     var ContentBounds: TRectF);
  44.     procedure RestorePosition;
  45.     procedure UpdateKBBounds;
  46.     procedure OnPasswordTerminatedHandler(Sender:TObject);
  47.     procedure OnPasswordCompletedHandler;
  48.   public
  49.     { Public declarations }
  50.  
  51.   end;
  52.  
  53. var
  54.   FormUbahPassword: TFormUbahPassword;
  55.  
  56. implementation
  57.  
  58. {$R *.fmx}
  59. uses System.Math, frmMain, DataMgr;
  60. procedure TFormUbahPassword.FormCreate(Sender: TObject);
  61. begin
  62.  VertScrollBox1.OnCalcContentBounds := CalcContentBoundsProc;
  63. end;
  64.  
  65. procedure TFormUbahPassword.FormFocusChanged(Sender: TObject);
  66. begin
  67. UpdateKBBounds;
  68. end;
  69.  
  70. procedure TFormUbahPassword.FormVirtualKeyboardHidden(Sender: TObject;
  71.   KeyboardVisible: Boolean; const Bounds: TRect);
  72. begin
  73. FKBBounds.Create(0, 0, 0, 0);
  74.   FNeedOffset := False;
  75.   RestorePosition;
  76. end;
  77.  
  78. procedure TFormUbahPassword.FormVirtualKeyboardShown(Sender: TObject;
  79.   KeyboardVisible: Boolean; const Bounds: TRect);
  80. begin
  81.  FKBBounds := TRectF.Create(Bounds);
  82.   FKBBounds.TopLeft := ScreenToClient(FKBBounds.TopLeft);
  83.   FKBBounds.BottomRight := ScreenToClient(FKBBounds.BottomRight);
  84.   UpdateKBBounds;
  85. end;
  86.  
  87. procedure TFormUbahPassword.Button1Click(Sender: TObject);
  88. var
  89.   sOldPass:String;
  90.   sNewPass:String;
  91.   ObjPass:TJSONObject;
  92.   UserID:TJSONValue;
  93.   SessionID:TJSONValue;
  94. begin
  95.   if ReqPassword=nil then
  96.   begin
  97.     sOldPass:=EOldPass.Text;
  98.     sNewPass:=ENewPass.Text;
  99.  
  100.     if (sOldPass='') OR (sNewPass='')  then
  101.      begin
  102.        ShowMessage('Masukkan Password Lama dan Password Baru');
  103.      end
  104.      else
  105.      begin
  106.        try
  107.          //ENewPass.Enabled:=False;
  108.          //EOldPass.Enabled:=False;
  109.          //DataManager.ObjUser:=nil;
  110.         // UserID:=ObjUser.GetValue('iduser');
  111.          //SessionID:=ObjUser.GetValue('session_id');
  112.          UserID:=ObjPass.GetValue('iduser');
  113.          SessionID:=ObjPass.GetValue('session_id');
  114.  
  115.          DataManager.RESTRequestPassword.Params.Clear;
  116.          DataManager.RESTRequestPassword.Params.AddItem('user_id', UserID.Value);
  117.          DataManager.RESTRequestPassword.Params.AddItem('session_id', SessionID.Value);
  118.          DataManager.RESTRequestPassword.Params.AddItem('old_password', EOldPass.Text);
  119.          DataManager.RESTRequestPassword.Params.AddItem('new_password', ENewPass.Text);
  120.  
  121.         ReqPassword := DataManager.RESTRequestPassword.ExecuteAsync(OnPasswordCompletedHandler, True, True);
  122.         ReqPassword.OnTerminate:=OnPasswordTerminatedHandler;
  123.  
  124.         except on E: Exception do
  125.         begin
  126.            ShowMessage('Ubah Password Gagal 1 '+E.Message);
  127.         end;
  128.        end;
  129.      end;
  130.   end;
  131. end;
  132.  
  133. procedure TFormUbahPassword.OnPasswordTerminatedHandler(Sender:TObject);
  134. begin
  135. ReqPassword:=nil;
  136.          // ENewPass.Enabled:=True;
  137.         // EOldPass.Enabled:=True;
  138. end;
  139.  
  140. procedure TFormUbahPassword.OnPasswordCompletedHandler;
  141.   var
  142.   jObj:TJSONObject;
  143.   jStatus:TJSONValue;
  144.   jMsg:TJSONValue;
  145. begin
  146.   try
  147.     //EOldPass.Enabled:=True;
  148.     //ENewPass.Enabled:=True;
  149.  
  150.     jObj := DataManager.RESTResponsePassword.JSONValue As TJSONObject;
  151.     jStatus := jObj.GetValue('status');
  152.     jMsg := jObj.GetValue('message');
  153.  
  154.     if jStatus.ToString='1' then
  155.     begin
  156.       ShowMessage('Password berhasil diubah');
  157.     end
  158.     else
  159.    ShowMessage('Ubah Password Gagal.2 ' + jMsg.ToString);
  160.       //tracing pertama
  161.     except on E: Exception do
  162.       ShowMessage('Ubah Password Gagal.3 ' + E.Message);
  163.  
  164.  
  165.  
  166.   end;
  167. end;
  168.  
  169.  
  170. procedure TFormUbahPassword.CalcContentBoundsProc(Sender: TObject;
  171.                                        var ContentBounds: TRectF);
  172. begin
  173.   if FNeedOffset and (FKBBounds.Top > 0) then
  174.   begin
  175.     ContentBounds.Bottom := Max(ContentBounds.Bottom,
  176.                                 2 * ClientHeight - FKBBounds.Top);
  177.   end;
  178. end;
  179.  
  180. procedure TFormUbahPassword.RestorePosition;
  181. begin
  182.   VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X, 0);
  183.   MainLayout1.Align := TAlignLayout.Client;
  184.   VertScrollBox1.RealignContent;
  185. end;
  186.  
  187. procedure TFormUbahPassword.SpeedButton1Click(Sender: TObject);
  188. begin
  189. Close;
  190. end;
  191.  
  192. procedure TFormUbahPassword.SpeedButton2Click(Sender: TObject);
  193. begin
  194.   EOldPass.Password := not EOldPass.Password;
  195. end;
  196.  
  197. procedure TFormUbahPassword.SpeedButton3Click(Sender: TObject);
  198. begin
  199. ENewPass.Password := not ENewPass.Password;
  200. end;
  201.  
  202. procedure TFormUbahPassword.UpdateKBBounds;
  203. var
  204.   LFocused : TControl;
  205.   LFocusRect: TRectF;
  206. begin
  207.   FNeedOffset := False;
  208.   if Assigned(Focused) then
  209.   begin
  210.     LFocused := TControl(Focused.GetObject);
  211.     LFocusRect := LFocused.AbsoluteRect;
  212.     LFocusRect.Offset(VertScrollBox1.ViewportPosition);
  213.     if (LFocusRect.IntersectsWith(TRectF.Create(FKBBounds))) and
  214.        (LFocusRect.Bottom > FKBBounds.Top) then
  215.     begin
  216.       FNeedOffset := True;
  217.       MainLayout1.Align := TAlignLayout.Horizontal;
  218.       VertScrollBox1.RealignContent;
  219.       Application.ProcessMessages;
  220.       VertScrollBox1.ViewportPosition :=
  221.         PointF(VertScrollBox1.ViewportPosition.X,
  222.                LFocusRect.Bottom - FKBBounds.Top);
  223.     end;
  224.   end;
  225.   if not FNeedOffset then
  226.     RestorePosition;
  227. end;
  228.  
  229. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement