Dra*_*rok 4 windows delphi delphi-5
很简单,但我找不到答案.
我正在使用Delphi 5 Enterprise构建应用程序,并希望我的应用程序在密码字段中使用新的粗体黑点而不是星号.
我怎样才能做到这一点?
Sin*_*nür 10
根据视觉风格显示黑点是非常简单的!
private const int ES_PASSWORD = 0x0020;
...
protected override CreateParams CreateParams
{
CreateParams cp = base.CreateParams;
...
cp.Style |= ES_PASSWORD;
...
return cp;
}
Run Code Online (Sandbox Code Playgroud)
感谢上述所有尝试以及所有贡献,但我必须将所有相关部分加入到一起才能找到完整的解决方案.
感谢SinanÜnür指出ES_PASSWORD标志,该标志在Delphi中默认使用,但仅当PasswordChar <>#0(NUL)时.
这意味着当你将PasswordChar设置为某个东西时,它会设置ES_PASSWORD标志,然后调用SendMessage(Handle, EM_SETPASSWORDCHAR, Ord(FPasswordChar), 0);(感谢Stijn Sanders将我指向StdCtrls源).
如果我创建一个子类并绕过发送EM_SETPASSWORDCHAR字段的行,我仍然只得到星星.
我忘记做的是启用主题(在我的古代版本的Delphi中需要编译资源文件).嘿presto,它的工作原理; Blob比比皆是!
所以,总结一下:
如果您还没有ES_PASSWORD常量,请定义它.
const
ES_PASSWORD = 32;
Run Code Online (Sandbox Code Playgroud)创建一个TEdit子类并覆盖CreateParams以在窗口样式中包含ES_PASSWORD.
procedure TPasswordEdit.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style or ES_PASSWORD;
end;
Run Code Online (Sandbox Code Playgroud)为您的计划启用主题.
而且也没有设置PasswordChar属性.完成!
| 归档时间: |
|
| 查看次数: |
1702 次 |
| 最近记录: |