Delphi XE8 的 TMemo 中的 PasswordChar

PasswordChar in Delphi XE8's TMemo

我花了几个小时搜索 Google 看是否有人分享了他们的文章,但一无所获。

如果可能的话,我想知道如何 enable/disable Delphi XE8 的 TMemo 中的 PasswordChar 来像 TEdit 中那样隐藏用户输入。 ?也许通过复选框!

所以当复选框被选中时,所有文本都变成星号,如果复选框未被选中,所有文本恢复正常..

VCL 备忘录控件是 Win32 多行编辑的松散包装。编辑控件的密码字符功能仅适用于单行编辑。

该行为由 ES_PASSWORD 样式控制,documentation 表示:

Displays an asterisk (*) for each character typed into the edit control. This style is valid only for single-line edit controls.

FMX 备忘录控件不为多行备忘录控件提供密码字符功能。

大概这些框架没有提供您想要的,因为密码是在单行编辑控件中输入的。开发人员往往不会提供没有明确使用案例的功能。

您的选择:

  • 使用单行TEdit
  • 编写您自己的支持所需功能的多行备忘录。
  • 查找支持您所需功能的第三方多行备忘录。

现在,由于您的问题非常笼统,我假设您希望完全支持单行密码字符。也就是说,用户输入文本并且它看起来被遮盖了。

但也许您实际上不需要可编辑性。在那种情况下,它很简单。执行以下操作:

  1. 将真实文本加载或添加到单独的 TStringList
  2. 当您想显示真实文本时,将字符串列表分配给备忘录。
  3. 当你想隐藏内容时,将真实的文本处理成你想显示的内容,然后显示。
  4. 将备忘录控件设为只读。
if cBoxPassword.checked=false then
edtpassword.PasswordChar:='*';
if cBoxPassword.checked=true then
edtPassword.PasswordChar:=#0;