Разрешить пользователю копировать текст из поля пароля - PullRequest
6 голосов
/ 27 февраля 2020

В моем приложении есть TEdit с PasswordChar = '*'.

Когда пользователь нажимает Ctrl + C, появляется подсказка.

Screenshot of a Windows edit control in password mode showing its

Переведено:

Недопустимо

Нельзя скопировать текст из поля пароля.

И, очевидно, пункт Копировать в раскрывающемся меню отключен

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

Есть ли способ включить действие копирования для редакторов паролей?

Ответы [ 2 ]

9 голосов
/ 27 февраля 2020

Обычным способом является кнопка справа от поля редактирования, позволяющая отобразить пароль. Это может быть связано с некоторыми условиями доступа. Пока пароль виден, его также можно скопировать.

7 голосов
/ 27 февраля 2020

Это лишь незначительное расширение Уве Раабе , правильный ответ ; пожалуйста, предпочтите подтвердить / принять его ответ.

Вы можете выбрать две кнопки рядом с элементом редактирования пароля 1 :

  • Тот, который отображает пароль на экране (то есть устанавливает PasswordChar = #0). Это можно сделать либо временно, пока кнопка нажата, либо переключаться между двумя состояниями при каждом нажатии. (Если вы выберете первый метод, помните, что пользовательский интерфейс должен использоваться на 100% без мыши, только с помощью клавиатуры.)
  • Тот, который копирует пароль в буфер обмена.

Screenshot of a Windows password edit control with two small buttons next to it to the right. The first small button has a glyph resembling an eye; the second small button has a copy icon glyph.

Firefox предлагает эту двойную функциональность, и я считаю очень удобным иметь возможность помещать пароль в буфер обмена без его отображения на экране .

При желании вам может потребоваться проверка безопасности перед выполнением любого из действий. Например, Firefox запрашивает главный пароль (если имеется).

1 Убедитесь, что обе кнопки могут использоваться как с мышью, так и с клавиатурой. В частности, это означает, что вы не можете использовать TSpeedButton элементы управления (по крайней мере, без дополнительных усилий). TBitBtn все в порядке, хотя. Также убедитесь, что порядок вкладок правильный: слева направо. Хорошей идеей является создание нового пользовательского элемента управления с этим созвездием из трех элементов управления. Я бы посоветовал вам дать кнопкам всплывающие подсказки: Show password и Copy password соответственно.

...