【问题标题】:PasswordChar in Delphi XE8's TMemoDelphi XE8 的 TMemo 中的 PasswordChar
【发布时间】:2015-06-22 05:14:54
【问题描述】:

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

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

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

【问题讨论】:

  • 那么你的问题是什么?请不要告诉我这是“有人……”
  • 我们甚至不知道您是指 FMX 还是 VCL。为什么是备忘录?密码被输入到单行编辑控件中。请编辑问题以明确您的要求。
  • 我有包含一些设置的 INI 文件 [TiniFile]。当我将它加载到备忘录时,我希望 INI 文件内容的所有文本都自动变为星号 [默认情况下选中复选框]。如果复选框未选中,所有文本恢复正常..请帮助

标签: delphi delphi-xe8


【解决方案1】:

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

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

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

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

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

您的选择:

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

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

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

  1. 将真实文本加载或添加到单独的TStringList
  2. 当您想要显示真实文本时,将字符串列表分配给备忘录。
  3. 当您想要隐藏内容时,将真实文本处理成您想要显示的任何内容,然后显示。
  4. 将备忘录控件设为只读。

【讨论】:

    【解决方案2】:
    if cBoxPassword.checked=false then
    edtpassword.PasswordChar:='*';
    if cBoxPassword.checked=true then
    edtPassword.PasswordChar:=#0;
    

    【讨论】:

    • 这没有提供完整的答案。请解释为什么应该这样做。
    • 这不适用于 TMemo。它仅适用于 TEdit。
    猜你喜欢
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多