允许用户从密码字段复制文本

7
在我的应用程序中,有一个TEdit,其中PasswordChar = '*'
当用户按下Ctrl + C时,会出现一个提示。

Screenshot of a Windows edit control in password mode showing its "cannot copy" balloon.

翻译:

不允许

您不能从密码字段复制文本。

显然,下拉菜单中的复制选项已被禁用。

Screenshot of a Windows edit control in password mode with its context menu visible; the Copy item is disabled.

有没有一种方法可以启用密码编辑器的复制操作?

2
显然这是按设计的。TEdit 是 Windows 常规控件。要么编写自己的控件,要么按照 Uwe 的建议去做。这种行为有很好的理由。 - kobik
2
@Fabrizio:请记得用适当的摘要替换“在此输入图像描述”文本。否则,使用屏幕阅读器的视障人士将无法理解您的问题。此外,谷歌也会更难理解图像的内容。我已将ALT文本分别更改为“显示其“无法复制”气球的密码模式下的Windows编辑控件的屏幕截图。”和“显示其上下文菜单的密码模式下的Windows编辑控件的屏幕截图;复制项目被禁用。”请注意,它们确实描述了图像。 - Andreas Rejbrand
2
把以下与编程有关的内容从英语翻译成中文。仅返回已翻译的文本: - Andreas Rejbrand
@AndreasRejbrand:谢谢!我总是忘记添加图片描述,下次我会尽力做得更好 :) - Fabrizio
2个回答

9
通常的做法是在编辑字段右侧放置一个按钮,允许显示密码。这可能会绑定一些访问条件。当密码可见时,它也可以被复制。

7

这只是对Uwe Raabe正确答案的小扩展; 请优先投票/接受他的回答。

你可以选择在密码编辑控件旁边放置两个按钮1:

  • 一个显示屏幕上的密码(即设置 PasswordChar = #0)。 可以在按下按钮时临时进行,也可以在每次单击时在两种状态之间切换。(如果选择第一种方法,请记住UI必须100%可用,不使用鼠标,仅使用键盘。)
  • 一个将密码复制到剪贴板的按钮。

Windows密码编辑控件的屏幕截图,右侧有两个小按钮。第一个小按钮具有类似于眼睛的符号;第二个小按钮具有复制图标符号。

Firefox提供了这种双重功能,我发现能够将密码放在剪贴板中而不会在屏幕上显示非常方便。

可选地,您可以在执行任何操作之前进行一些安全检查。例如,Firefox要求输入主密码(如果存在)。

1确保两个按钮都可用鼠标和键盘。特别是,这意味着您不能使用 TSpeedButton控件(至少不需要额外的工作)。TBitBtn可以,但请确保选项卡顺序正确:从左到右。最好创建一个带有这种三元组合的新自定义控件。我建议您让按钮拥有提示工具:显示密码复制密码


请随意使用更漂亮的图标;我在Microsoft Paint中快速绘制了这两个。 - Andreas Rejbrand
我们也可以尝试使用 TButtonedEdit。虽然它只支持一个按钮在右侧,但它确实支持下拉菜单,不是吗? - Andreas Rejbrand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接