如何让InputBox也能使用密码掩码

字体大小: 中小 标准 ->行高大小: 标准
我们经常使用InputBox,但是,一个缺点就是,Inputbox不能有密码掩码的功能,就是用*掩盖输入的字符,下面的代码演示了一个巧妙的方法来做到这一点:

const

InputBoxMessage = WM_USER + 200;

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

procedure InputBoxSetPasswordChar(var Msg: TMessage); message InputBoxMessage;

public

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.InputBoxSetPasswordChar(var Msg: TMessage);

var

hInputForm, hEdit, hButton: HWND;

begin

hInputForm := Screen.Forms[0].Handle;

if (hInputForm <> 0) then

begin

hEdit := FindWindowEx(hInputForm, 0, 'TEdit', nil);

{

// Change button text:

hButton := FindWindowEx(hInputForm, 0, 'TButton', nil);

SendMessage(hButton, WM_SETTEXT, 0, Integer(PChar('Cancel')));

}

SendMessage(hEdit, EM_SETPASSWORDCHAR, Ord('*'), 0);

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

InputString: string;

begin

PostMessage(Handle, InputBoxMessage, 0, 0);

InputString := InputBox('Input Box', 'Please Enter a Password', '');

end;

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68192.html