Ajuda com InputBox

Delphi

02/10/2012

Olá pessoal!

Não tenho o custume de utilizar muito o InputBox, então eu gostaria de saber se há algum jeito de utilizá-lo para o usuário digitar senha, mas os caracteres teria de aparecer **** ou ####, coisa to tipo.

Tem algum jeito de fazer isso no InputBox?

Agradeço desde já qulauqer ajuda...
Vagner Almeida

Vagner Almeida

Curtidas 0

Respostas

Gilvanio Gonçalves

Gilvanio Gonçalves

02/10/2012

vc tem que declarar a unit Messages, e a constante abaixo logo após a seção uses de sua unit.

Const
  InputBoxMsg = WM_USER + 123;




agora declare a procedure para conversão dos caracteres para PassWordChar como abaixo.

  private
    { Private declarations }
    procedure InputBoxSet(var Msg: TMessage); message InputBoxMsg;



Contruindo a procedure que fará a transformção:

procedure TForm1.InputBoxSet(var Msg: TMessage);
var
  i: integer;
begin
  for i:=0 to Screen.Forms[0].ComponentCount-1 do
  begin
    if Screen.Forms[0].Components[i] is TEdit then
    begin
      With TEdit( Screen.Forms[0].Components[i] ) do
      begin
        PasswordChar := '*'; 
        Clear;                
      end;
    end;
  end;
end; 


exemplo como deve ficar o uso de sua InputBox

var
  Senha: string;
begin

  PostMessage(Handle, InputBoxMsg, 0, 0);
  Senha := InputBox('Autenticação', 'Informe sua senha:', '');
  if Senha <> '' then
    ShowMessage('A senha informada foi: ' + Senha);
end;



espero que te ajudae, adapde ai.
GOSTEI 0
Alisson Santos

Alisson Santos

02/10/2012

qual a necessidade de utilizar esse recurso?
GOSTEI 0
Marco Salles

Marco Salles

02/10/2012

Hummm

Contruindo a procedure que fará a transformção:

#Código
procedure TForm1.InputBoxSet(var Msg: TMessage);
var
i: integer;
begin
for i:=0 to Screen.Forms[0].ComponentCount-1 do
begin
if Screen.Forms[0].Components[i] is TEdit then
begin
With TEdit( Screen.Forms[0].Components[i] ) do
begin
PasswordChar := '*';
Clear;
end;
end;
end;
end;


ou no lugar pode també utilizar a janela

var
  hInputForm, hEdit: HWND;
begin
  hInputForm := Screen.Forms[0].Handle;
  if (hInputForm <> 0) then
  begin
    hEdit := FindWindowEx(hInputForm, 0, 'TEdit', nil);
    SendMessage(hEdit, EM_SETPASSWORDCHAR, Ord('*'), 0);
  end;

end;


que deve funiconar
GOSTEI 0
José

José

02/10/2012

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0
POSTAR