Question

un assez simple, mais je ne peux pas trouver la réponse.

Je construis une application dans Delphi 5 Enterprise, et que vous voulez mon application pour utiliser le nouveau point noir gras dans un champ de mot de passe au lieu d'un astérisque.

Comment puis-je faire?

Était-ce utile?

La solution 2

Merci à toutes les tentatives ci-dessus, et tout ce qui a contribué, mais je devais rejoindre toutes les parties prenantes pour arriver à une solution complète.

Merci à Sinan Unur pour remarquer le drapeau ES_PASSWORD, qui est utilisé par défaut dans Delphi, mais seulement si PasswordChar est <> # 0 (NUL).

Cela signifie que lorsque vous définissez PasswordChar à quelque chose, il met le drapeau ES_PASSWORD et appelle ensuite SendMessage(Handle, EM_SETPASSWORDCHAR, Ord(FPasswordChar), 0); (grâce à Stijn Sanders pour moi pointant vers la source StdCtrls).

Si je crée une sous-classe et de contourner la ligne envoyer le champ EM_SETPASSWORDCHAR, I toujours obtenir seulement étoiles.

Ce que j'oubliais de faire était de permettre des thèmes (qui, dans ma version ancienne de Delphi nécessite un fichier de ressources compilation dans). Hey presto, cela fonctionne; Blobs ne manquent pas!

Donc, en résumé:

  1. Définir la ES_PASSWORD constante si vous ne l'avez pas déjà.

    const
      ES_PASSWORD = 32;
    
  2. Créer une sous-classe de TEdit et remplacer CreateParams comprennent ES_PASSWORD dans le style de la fenêtre.

    procedure TPasswordEdit.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.Style := Params.Style or ES_PASSWORD;
    end;
    
  3. Activer thèmes pour votre programme.

Et faire pas définissez la propriété PasswordChar. Fait!

Autres conseils

Voir PasswordBox: Une meilleure façon de saisir des mots :

  

Obtenir les points noirs à apparaître en fonction du style visuel est incroyablement simple,

    private const int ES_PASSWORD = 0x0020;
    ...

    protected override CreateParams CreateParams
    {
        CreateParams cp = base.CreateParams;
        ...

        cp.Style |= ES_PASSWORD;
        ...

        return cp;
    }

Je suis sûr qu'il utilise la norme police de l'interface utilisateur. Le code CharMap est U + 25CF

Je ne sais pas si cela va fonctionner, mais vous pourriez être en mesure de copier cela.

Jusqu'à Delphi 2007, en utilisant "*" pour votre personnage de mot de passe montreraient que "*". A partir de Delphi 2009, cette montre bien .

Selon KB 956609 , le caractère point est Unicode 0x25cf. Il est pas lié à une police particulière, mais la page liée spécifiquement mentionné que IE utilise la police Tahoma.

Le point noir gras dans les champs de mot de passe est le caractère Unicode U + 25CF ( « cercle noir »). La plupart des polices communes disposent ce caractère.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top