Componentes - criar um inputbox para entrar senha com asterisco

Top  Previous  Next

InputBox para entrada de Senhas (com caracter *)

Função PasswordInputBox: é utilizada assim como a função InputBox, o 1o. parametro é o caption do formulário, o 2o. é o caption do label. Não tem o 3o. parametro porque não tem cabimento colocar uma resposta padrão para um pedido de senha.

 

obs: necessita da unit "dialogs" na clausula uses

 

 

function PasswordInputBox(const ACaption, APrompt:string): string;

var

  Form: TForm;

  Prompt: TLabel;

  Edit: TEdit;

  DialogUnits: TPoint;

  ButtonTop, ButtonWidth, ButtonHeight: Integer;

  Value: string;

  I: Integer;

  Buffer: array[0..51of Char;

begin

  Result := '';

  Form := TForm.Create(Application);

  with Form do

  try

    Canvas.Font := Font;

    for I := 0 to 25 do Buffer[I] := Chr(I + Ord('A'));

    for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord('a'));

    GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(DialogUnits));

    DialogUnits.X := DialogUnits.X div 52;

    BorderStyle := bsDialog;

    Caption := ACaption;

    ClientWidth := MulDiv(180, DialogUnits.X, 4);

    ClientHeight := MulDiv(63, DialogUnits.Y, 8);

    Position := poScreenCenter;

    Prompt := TLabel.Create(Form);

    with Prompt do

    begin

      Parent := Form;

      AutoSize := True;

      Left := MulDiv(8, DialogUnits.X, 4);

      Top := MulDiv(8, DialogUnits.Y, 8);

      Caption := APrompt;

    end;

    Edit := TEdit.Create(Form);

    with Edit do

    begin

      Parent := Form;

      Left := Prompt.Left;

      Top := MulDiv(19, DialogUnits.Y, 8);

      Width := MulDiv(164, DialogUnits.X, 4);

      MaxLength := 255;

      PasswordChar := '*';

      SelectAll;

    end;

    ButtonTop := MulDiv(41, DialogUnits.Y, 8);

    ButtonWidth := MulDiv(50, DialogUnits.X, 4);

    ButtonHeight := MulDiv(14, DialogUnits.Y, 8);

    with TButton.Create(Form) do

    begin

      Parent := Form;

      Caption := 'OK';

      ModalResult := mrOk;

      Default := True;

      SetBounds(MulDiv(38, DialogUnits.X, 4),ButtonTop, ButtonWidth,ButtonHeight);

    end;

    with TButton.Create(Form) do

    begin

      Parent := Form;

      Caption := 'Cancel';

      ModalResult := mrCancel;

      Cancel := True;

      SetBounds(MulDiv(92, DialogUnits.X, 4),ButtonTop, ButtonWidth,ButtonHeight);

    end;

    if ShowModal = mrOk then

    begin

      Value := Edit.Text;

      Result := Value;

    end;

  finally

    Form.Free;

    Form:=nil;  

  end;

end;

 

Exemplo  de como usar:

 

if PasswordInputBox('Senha','Digite sua senha:') = '123456' then

  ShowMessage('Senha Correta')

else

  ShowMessage('Senha Errada');

.