unit ScModifyPwdFrm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, JimCombos, ExtCtrls, StdCtrls, cxLookAndFeelPainters, cxTextEdit, cxButtons, cxControls, cxEdit, cxMaskEdit, cxDropDownEdit, HookEdit, cxContainer, cslLabel; type TModifyPwdFrm = class(TForm) Image1: TImage; cxbComfirm: TcxButton; GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; cxeUserName: TcxTextEdit; edtPassword: TEdit; Label3: TLabel; edtNewPassword: TEdit; Label4: TLabel; cxbExit: TcxButton; edtConfirmNewPassword: TEdit; Label6: TLabel; procedure edtPasswordEnter(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure edtNewPasswordEnter(Sender: TObject); procedure edtConfirmNewPasswordEnter(Sender: TObject); procedure cxbComfirmClick(Sender: TObject); procedure cxbExitClick(Sender: TObject); private { Private declarations } public { Public declarations } function CheckData: Boolean; end; function ShowModifyPwdForm(var AUserName, APW, ANewPW1, ANewPW2: string): Boolean; implementation uses ScClientDM, ScUtils, ShellAPI, IniFiles; {$R *.dfm} type TEditAccess = class(TcxCustomTextEdit); // chenshilong, 2011-05-13 10:21:54 function ShowModifyPwdForm(var AUserName, APW, ANewPW1, ANewPW2: string): Boolean; var Form: TModifyPwdFrm; begin Result := False; Form := TModifyPwdFrm.Create(nil); try AUserName := UserConfigInfo.UserName; APW := ''; Form.cxeUserName.Text := UserConfigInfo.UserName; // ANewPW1 := UserConfigInfo.NewPassWord1; // ANewPW2 := UserConfigInfo.NewPassWord2; // Form.edtPassword.Text := UserConfigInfo.PassWord; if Form.ShowModal = mrOK then begin if APW <> '' then SetEncryptEdit(Form.edtPassword); if ANewPW1 <> '' then SetEncryptEdit(Form.edtNewPassword); if ANewPW2 <> '' then SetEncryptEdit(Form.edtConfirmNewPassword); AUserName := Trim(Form.cxeUserName.Text); APW := GetEncryptEditText(Form.edtPassword); ANewPW1 := GetEncryptEditText(Form.edtNewPassword); ANewPW2 := GetEncryptEditText(Form.edtConfirmNewPassword); DisableHookEdit; Result := True; end; finally Form.Free; end; end; { TLoginFrm } procedure TModifyPwdFrm.edtPasswordEnter(Sender: TObject); begin //edtPassword.Clear; SetEncryptEdit(TEdit(Sender)); end; procedure TModifyPwdFrm.FormDestroy(Sender: TObject); begin RemoveEncryptEdit(edtPassword); RemoveEncryptEdit(edtNewPassword); RemoveEncryptEdit(edtConfirmNewPassword); end; procedure TModifyPwdFrm.edtNewPasswordEnter(Sender: TObject); begin //edtNewPassword.Clear; SetEncryptEdit(TEdit(Sender)); end; procedure TModifyPwdFrm.edtConfirmNewPasswordEnter(Sender: TObject); begin //edtConfirmNewPassword.Clear; SetEncryptEdit(TEdit(Sender)); end; procedure TModifyPwdFrm.cxbComfirmClick(Sender: TObject); begin if CheckData then ModalResult := mrOK; end; function TModifyPwdFrm.CheckData: Boolean; var APW, PWD1, PWD2, ReturnCopy: string; endWord: Char; i: Integer; begin APW := GetEncryptEditText(edtPassword); PWD1 := GetEncryptEditText(edtNewPassword); PWD2 := GetEncryptEditText(edtConfirmNewPassword); Result := True; if Trim(cxeUserName.Text) = '' then begin MessageHint(0, '请输入用户名。'); Result := False; cxeUserName.SetFocus; Exit; end; if Trim(APW) = '' then begin MessageHint(0, '请输入密码。'); Result := False; edtPassword.SetFocus; Exit; end; APW := Trim(APW); if Pos(' ', APW) > 0 then begin MessageHint(0, '请不要在密码中输入空格。'); Result := False; edtPassword.SetFocus; Exit; end; for I := 1 to Length(APW) do begin ReturnCopy := Copy(APW, I, 1); endWord := ReturnCopy[1]; if Ord(endWord) >= 128 then begin MessageHint(0, '请不要在密码中输入汉字。'); Result := False; edtPassword.SetFocus; Exit; end; end; if Trim(PWD1) = '' then begin MessageHint(0, '请输入新密码。'); Result := False; edtNewPassword.SetFocus; Exit; end; PWD1 := Trim(PWD1); if Pos(' ', PWD1) > 0 then begin MessageHint(0, '请不要在新密码中输入空格。'); Result := False; edtNewPassword.SetFocus; Exit; end; if (Length(PWD1) < 6) or (Length(PWD1) > 12) then begin MessageHint(0, '您输入的新密码长度不合规范,请重新输入!。'); Result := False; edtNewPassword.SetFocus; Exit; end; for I := 1 to Length(PWD1) do begin ReturnCopy := Copy(PWD1, I, 1); endWord := ReturnCopy[1]; if Ord(endWord) >= 128 then begin MessageHint(0, '请不要在新密码中输入汉字。'); Result := False; edtNewPassword.SetFocus; Exit; end; end; if Trim(edtConfirmNewPassword.Text) = '' then begin MessageHint(0, '请输入确认密码。'); Result := False; edtConfirmNewPassword.SetFocus; Exit; end; PWD1 := GetEncryptEditText(edtNewPassword); PWD2 := GetEncryptEditText(edtConfirmNewPassword); if CompareStr(PWD1, PWD2) <> 0 then begin MessageHint(0, '两次输入密码不一致,请重新输入,注意区分大小写。'); Result := False; edtNewPassword.SetFocus; Exit; end; end; procedure TModifyPwdFrm.cxbExitClick(Sender: TObject); begin close; end; end.