Pretty simple one, but I can’t find the answer.
I’m building an app in Delphi 5 Enterprise, and want my app to use the new bold black dot in a password field instead of an asterisk.
How can I do this?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Thanks to all the above attempts, and all that contributed, but I had to join all the relevant parts together to get to a whole solution.
Thanks to Sinan Ünür for pointing out the ES_PASSWORD flag, which is used by default in Delphi, but only if PasswordChar is <> #0 (NUL).
This means that when you set PasswordChar to something, it sets the ES_PASSWORD flag, and then calls
SendMessage(Handle, EM_SETPASSWORDCHAR, Ord(FPasswordChar), 0);(thanks to Stijn Sanders for pointing me towards the StdCtrls source).If I create a subclass and bypass the line sending the EM_SETPASSWORDCHAR field, I still get only stars.
What I was forgetting to do was enable themes (which in my ancient version of Delphi requires a resource file compiling in). Hey presto, it works; Blobs abound!
So, in summary:
Define the ES_PASSWORD constant if you don’t already have it.
Create a TEdit subclass and override
CreateParamsto include ES_PASSWORD in the window style.Enable themes for your program.
And do not set the PasswordChar property. Done!