Delphi XE8的TMemo中的PasswordChar

时间:2015-06-22 05:14:54

标签: delphi delphi-xe8

我花了几个小时搜索谷歌,看看是否有人分享了他们的文章,但空手而归。

如果可能的话,我想知道如何在Delphi XE8的TMemo中启用/禁用passwordChar来隐藏TEdit中的用户输入。 ?也许通过一个复选框!

因此,选中复选框后,所有文本都会变为星号,如果取消选中该复选框,则所有文字都会恢复正常..

2 个答案:

答案 0 :(得分:2)

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

行为由documentation所说的ES_PASSWORD样式控制:

  

为编辑控件中输入的每个字符显示星号(*)。此样式仅对单行编辑控件有效。

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

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

您的选择:

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

现在,由于您的问题非常普遍,我假设您希望完全支持单行密码字符。也就是说,用户输入文本并显示为蒙版。

但也许你真的不需要可编辑性。在这种情况下,它很简单。执行以下操作:

  1. 将真实文本加载或添加到单独的TStringList中。
  2. 如果要显示真实文本,请将字符串列表分配给备忘录。
  3. 如果要隐藏内容,请将真实文本处理为您要显示的内容,然后显示该内容。
  4. 使备忘录控件只读。

答案 1 :(得分:0)

if cBoxPassword.checked=false then
edtpassword.PasswordChar:='*';
if cBoxPassword.checked=true then
edtPassword.PasswordChar:=#0;