ScModifyPwdFrm.pas 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. unit ScModifyPwdFrm;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, JimCombos, ExtCtrls, StdCtrls, cxLookAndFeelPainters,
  6. cxTextEdit, cxButtons, cxControls, cxEdit,
  7. cxMaskEdit, cxDropDownEdit, HookEdit, cxContainer, cslLabel;
  8. type
  9. TModifyPwdFrm = class(TForm)
  10. Image1: TImage;
  11. cxbComfirm: TcxButton;
  12. GroupBox1: TGroupBox;
  13. Label1: TLabel;
  14. Label2: TLabel;
  15. cxeUserName: TcxTextEdit;
  16. edtPassword: TEdit;
  17. Label3: TLabel;
  18. edtNewPassword: TEdit;
  19. Label4: TLabel;
  20. cxbExit: TcxButton;
  21. edtConfirmNewPassword: TEdit;
  22. Label6: TLabel;
  23. procedure edtPasswordEnter(Sender: TObject);
  24. procedure FormDestroy(Sender: TObject);
  25. procedure edtNewPasswordEnter(Sender: TObject);
  26. procedure edtConfirmNewPasswordEnter(Sender: TObject);
  27. procedure cxbComfirmClick(Sender: TObject);
  28. procedure cxbExitClick(Sender: TObject);
  29. private
  30. { Private declarations }
  31. public
  32. { Public declarations }
  33. function CheckData: Boolean;
  34. end;
  35. function ShowModifyPwdForm(var AUserName, APW, ANewPW1, ANewPW2: string): Boolean;
  36. implementation
  37. uses
  38. ScClientDM, ScUtils, ShellAPI, IniFiles;
  39. {$R *.dfm}
  40. type
  41. TEditAccess = class(TcxCustomTextEdit);
  42. // chenshilong, 2011-05-13 10:21:54
  43. function ShowModifyPwdForm(var AUserName, APW, ANewPW1, ANewPW2: string): Boolean;
  44. var
  45. Form: TModifyPwdFrm;
  46. begin
  47. Result := False;
  48. Form := TModifyPwdFrm.Create(nil);
  49. try
  50. AUserName := UserConfigInfo.UserName;
  51. APW := '';
  52. Form.cxeUserName.Text := UserConfigInfo.UserName;
  53. // ANewPW1 := UserConfigInfo.NewPassWord1;
  54. // ANewPW2 := UserConfigInfo.NewPassWord2;
  55. // Form.edtPassword.Text := UserConfigInfo.PassWord;
  56. if Form.ShowModal = mrOK then
  57. begin
  58. if APW <> '' then
  59. SetEncryptEdit(Form.edtPassword);
  60. if ANewPW1 <> '' then
  61. SetEncryptEdit(Form.edtNewPassword);
  62. if ANewPW2 <> '' then
  63. SetEncryptEdit(Form.edtConfirmNewPassword);
  64. AUserName := Trim(Form.cxeUserName.Text);
  65. APW := GetEncryptEditText(Form.edtPassword);
  66. ANewPW1 := GetEncryptEditText(Form.edtNewPassword);
  67. ANewPW2 := GetEncryptEditText(Form.edtConfirmNewPassword);
  68. DisableHookEdit;
  69. Result := True;
  70. end;
  71. finally
  72. Form.Free;
  73. end;
  74. end;
  75. { TLoginFrm }
  76. procedure TModifyPwdFrm.edtPasswordEnter(Sender: TObject);
  77. begin
  78. //edtPassword.Clear;
  79. SetEncryptEdit(TEdit(Sender));
  80. end;
  81. procedure TModifyPwdFrm.FormDestroy(Sender: TObject);
  82. begin
  83. RemoveEncryptEdit(edtPassword);
  84. RemoveEncryptEdit(edtNewPassword);
  85. RemoveEncryptEdit(edtConfirmNewPassword);
  86. end;
  87. procedure TModifyPwdFrm.edtNewPasswordEnter(Sender: TObject);
  88. begin
  89. //edtNewPassword.Clear;
  90. SetEncryptEdit(TEdit(Sender));
  91. end;
  92. procedure TModifyPwdFrm.edtConfirmNewPasswordEnter(Sender: TObject);
  93. begin
  94. //edtConfirmNewPassword.Clear;
  95. SetEncryptEdit(TEdit(Sender));
  96. end;
  97. procedure TModifyPwdFrm.cxbComfirmClick(Sender: TObject);
  98. begin
  99. if CheckData then
  100. ModalResult := mrOK;
  101. end;
  102. function TModifyPwdFrm.CheckData: Boolean;
  103. var
  104. APW, PWD1, PWD2, ReturnCopy: string;
  105. endWord: Char;
  106. i: Integer;
  107. begin
  108. APW := GetEncryptEditText(edtPassword);
  109. PWD1 := GetEncryptEditText(edtNewPassword);
  110. PWD2 := GetEncryptEditText(edtConfirmNewPassword);
  111. Result := True;
  112. if Trim(cxeUserName.Text) = '' then
  113. begin
  114. MessageHint(0, '请输入用户名。');
  115. Result := False;
  116. cxeUserName.SetFocus;
  117. Exit;
  118. end;
  119. if Trim(APW) = '' then
  120. begin
  121. MessageHint(0, '请输入密码。');
  122. Result := False;
  123. edtPassword.SetFocus;
  124. Exit;
  125. end;
  126. APW := Trim(APW);
  127. if Pos(' ', APW) > 0 then
  128. begin
  129. MessageHint(0, '请不要在密码中输入空格。');
  130. Result := False;
  131. edtPassword.SetFocus;
  132. Exit;
  133. end;
  134. for I := 1 to Length(APW) do
  135. begin
  136. ReturnCopy := Copy(APW, I, 1);
  137. endWord := ReturnCopy[1];
  138. if Ord(endWord) >= 128 then
  139. begin
  140. MessageHint(0, '请不要在密码中输入汉字。');
  141. Result := False;
  142. edtPassword.SetFocus;
  143. Exit;
  144. end;
  145. end;
  146. if Trim(PWD1) = '' then
  147. begin
  148. MessageHint(0, '请输入新密码。');
  149. Result := False;
  150. edtNewPassword.SetFocus;
  151. Exit;
  152. end;
  153. PWD1 := Trim(PWD1);
  154. if Pos(' ', PWD1) > 0 then
  155. begin
  156. MessageHint(0, '请不要在新密码中输入空格。');
  157. Result := False;
  158. edtNewPassword.SetFocus;
  159. Exit;
  160. end;
  161. if (Length(PWD1) < 6) or (Length(PWD1) > 12) then
  162. begin
  163. MessageHint(0, '您输入的新密码长度不合规范,请重新输入!。');
  164. Result := False;
  165. edtNewPassword.SetFocus;
  166. Exit;
  167. end;
  168. for I := 1 to Length(PWD1) do
  169. begin
  170. ReturnCopy := Copy(PWD1, I, 1);
  171. endWord := ReturnCopy[1];
  172. if Ord(endWord) >= 128 then
  173. begin
  174. MessageHint(0, '请不要在新密码中输入汉字。');
  175. Result := False;
  176. edtNewPassword.SetFocus;
  177. Exit;
  178. end;
  179. end;
  180. if Trim(edtConfirmNewPassword.Text) = '' then
  181. begin
  182. MessageHint(0, '请输入确认密码。');
  183. Result := False;
  184. edtConfirmNewPassword.SetFocus;
  185. Exit;
  186. end;
  187. PWD1 := GetEncryptEditText(edtNewPassword);
  188. PWD2 := GetEncryptEditText(edtConfirmNewPassword);
  189. if CompareStr(PWD1, PWD2) <> 0 then
  190. begin
  191. MessageHint(0, '两次输入密码不一致,请重新输入,注意区分大小写。');
  192. Result := False;
  193. edtNewPassword.SetFocus;
  194. Exit;
  195. end;
  196. end;
  197. procedure TModifyPwdFrm.cxbExitClick(Sender: TObject);
  198. begin
  199. close;
  200. end;
  201. end.