unit U_MakeEditPass; interface uses Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, RzPanel, RzButton, Mask, RzEdit, U_BaseCommon, U_BaseConstants, U_ProtectionBase, siComp, siLngLnk; type TF_MakeEditPass = class(TForm) RzPanel1: TRzPanel; RzGroupBox1: TRzGroupBox; btOk: TRzBitBtn; btCancel: TRzBitBtn; pnCurrPass: TRzPanel; Label1: TLabel; edCurrPass: TRzEdit; RzPanel2: TRzPanel; RzGroupBox2: TRzGroupBox; Label2: TLabel; Label3: TLabel; edNewPas: TRzEdit; edNewPassRep: TRzEdit; lng_Forms: TsiLangLinked; procedure btOkClick(Sender: TObject); procedure FormShow(Sender: TObject); private GForm: TForm; FCurrPass: String; public Constructor Create(AOwner: TComponent; AForm: TForm); Destructor Destroy; override; function Execute(ACurrPass: String): String; end; function GetNewPass(ACurrPass: String): String; //var // Form1: TForm1; implementation {$R *.dfm} constructor TF_MakeEditPass.Create(AOwner: TComponent; AForm: TForm); begin GForm := AForm; inherited Create(AOwner); end; destructor TF_MakeEditPass.Destroy; begin inherited; end; function TF_MakeEditPass.Execute(ACurrPass: String): String; begin Result := ''; try FCurrPass := ACurrPass; edCurrPass.Text := ''; edNewPas.Text := ''; edNewPassRep.Text := ''; pnCurrPass.Visible := ACurrPass <> ''; if ShowModal = mrOk then Result := GetHash(edNewPas.Text); except on E: Exception do AddExceptionToLogEx('TF_MakeEditPass.Execute', E.Message); end; end; procedure TF_MakeEditPass.btOkClick(Sender: TObject); begin if FCurrPass <> '' then begin if FCurrPass <> GetHash(edCurrPass.Text) then begin MessageModal(cMakeEditPass1, ApplicationName, MB_OK or MB_ICONEXCLAMATION); ModalResult := mrNone; end; end; if ModalResult <> mrNone then if edNewPas.Text <> edNewPassRep.Text then begin MessageModal(cMakeEditPass2, ApplicationName, MB_OK or MB_ICONEXCLAMATION); ModalResult := mrNone; end; end; function GetNewPass(ACurrPass: String): String; var F_MakeEditPass: TF_MakeEditPass; begin Result := ''; F_MakeEditPass := TF_MakeEditPass.Create(nil, nil); try Result := F_MakeEditPass.Execute(ACurrPass); finally FreeAndNil(F_MakeEditPass); end; end; procedure TF_MakeEditPass.FormShow(Sender: TObject); begin if FCurrPass <> '' then edCurrPass.SetFocus else edNewPas.SetFocus; end; end.