怎样让delphi的inputbox输入框显示密码代表符
发布网友
发布时间:2023-10-24 06:33
我来回答
共1个回答
热心网友
时间:2024-11-25 10:08
delphi 的 inputBox 函数,定义于 Dialogs 单元,其代码如下:
代码的核心是调用的 InputQuery 函数:
通常情况下 InputBox 是不显示密码代替符的,如果想要显示,有以下办法:
1、修改 InputQuery 函数源代码,使其支持显示密码符。
2、直接建立一个 InputBox 的窗体。
3、使用 WinAPI 函数,查找 InputBox 的窗体,然后发送 EM_SETPASSWORDCHAR 消息。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const InputboxMessage = WM_USER + 200; //定义消息
type
TForm1 = class(TForm)
Button1: TButton;
procere Button1Click(Sender: TObject);
private
{ Private declarations }
procere InputboxPassword(var MSG: TMessage); message InputBoxMessage;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procere TForm1.Button1Click(Sender: TObject);
begin
PostMessage(Handle,InputboxMessage,0,0); //发送消息
inputbox('a','b','ssss')
end;
procere TForm1.InputboxPassword(var MSG: TMessage);
var
InputForm,Hedit: THandle;
begin
InputForm:= Screen.Forms[0].Handle;
if InputForm <> 0 then
begin
Hedit:= FindWindowEx(InputForm,0,'Tedit',nil);
SendMessage(Hedit,EM_SETPASSWORDCHAR,Ord('*'),0);
end;
end;
end.