如何使我的delphi5应用程序显示密码“斑点”?

很简单,但我找不到答案。

我正在Delphi 5 Enterprise中构build一个应用程序,并希望我的应用程序在密码字段中使用新的粗体黑点而不是星号。

我怎样才能做到这一点?

delphiTExcelApplication和Windows预览平移

某些API的-MkParsedisplayNameEx,ADsGetobject-对于“windows server 2008 64bit”上的LDAP不起作用

如何用ToastGeneric在Delphi中创buildToast通知

什么错误/exception触发Windows错误报告?

添加到防火墙例外列表

dynamic加载exe文件

我的Delphi 7应用程序暂停Application.Initialize并不返回到下一行

获取数据库信息到程序的最佳方法(windows和mac)

ODBC Excel驱动程序:来自外部数据库驱动程序的意外错误

在Windows 8中debuggingWin64应用程序时,“无法创build进程… project1.exe”

请参阅PasswordBox:输入密码的更好方法

基于视觉风格让黑点显现出来非常简单!

private const int ES_PASSWORD = 0x0020; ... protected override CreateParams CreateParams { CreateParams cp = base.CreateParams; ... cp.Style |= ES_PASSWORD; ... return cp; }

感谢上述所有的努力和所有的贡献,但是我必须把所有的相关部分结合起来,才能得到一个完整的解决方案。

感谢SinanÜnür指出认在Delphi中使用的ES_PASSWORD标志,但只有在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;

创建一个TEdit子类并重写CreateParams以在窗口样式中包含ES_PASSWORD。

procedure TPasswordEdit.CreateParams(var Params: TCreateParams); begin inherited; Params.Style := Params.Style or ES_PASSWORD; end;

为您的程序启用主题

并且不要设置PasswordChar属性。 完成!

我相信它使用标准的UI字体。 CharMap代码是U + 25CF

我不知道这是否可行,但你也许可以复制这个。

直到Delphi 2007,使用"*"作为密码字符将显示为"*" 。 从Delphi 2009开始,这个显示正确 。

根据KB 956609 ,点字符是Unicode 0x25cf。 这不是绑定到一个特定的字体,但链接页面特别提到,IE使用Tahoma字体。

密码字段中的粗体黑点是Unicode字符U + 25CF(“BLACK CIRCLE”)。 最常见的字体功能这个字符。

相关文章

本篇内容主要讲解“gitee如何上传代码”,感兴趣的朋友不妨来...
这篇“从gitee上下的代码如何用”文章的知识点大部分人都不太...
这篇文章主要介绍“gitee如何下载仓库里的项目”,在日常操作...
本篇内容主要讲解“怎么在Gitee上更新代码”,感兴趣的朋友不...
本文小编为大家详细介绍“怎么将工程托管到gitee”,内容详细...
这篇文章主要介绍了gitee中图片大小如何调整的相关知识,内容...