[MaxGui] Textfield for password input?

BlitzMax Forums/BlitzMax Beginners Area/[MaxGui] Textfield for password input?

Grisu(Posted 2015) [#1]
Hello all,

Has anyone a small example code that turns user inputs for a textfield invisible (i.e. replacing each char with an asterik "*")?

I'm quite sure there was something for this on the code archives. But I can't find it anymore. :(

Grisu


Henri(Posted 2015) [#2]
Hi Grisu,

use 'TEXTFIELD_PASSWORD'-style in CreateTextField().

-Henri


Grisu(Posted 2015) [#3]
Thanks, worked! :)


Grisu(Posted 2015) [#4]
Sorry to come back to this:

But is there a way to unflag (i.e. remove the passwort flag) from the textfield afterwards? I want to give the user an option to show / hide the password input as he prefers.

SetGadgetText doesn't come with a flag parameter. I tried to remove and recreate the textfield (bad coding), but it still shows the "****"?

| Edit |

Got a workaround, you have to...

1. Hide the current Textfield.
2. Create a new Textfield and set the Password again.
3. Show the new Textfield.

RedrawGadget() has no effect!

	     		Case EVENT_GADGETACTION'BUTTON_ACTION
				HideGadget(Proxy_PasswordTextField:TGadget)	
  	            If ButtonState(Proxy_ShowPassword) = 0 Then 'Default = Hidden PW
					Proxy_PasswordTextField:TGadget	= CreateTextField(3, 25+PNL_HEIGHT+2,MAINWINDOW_W-3-SLIDER_WIDTH-46-16, PNL_HEIGHT, ProxyPanel, TEXTFIELD_PASSWORD)
					'Print "HIDDEN"
                Else ' Show PW
					Proxy_PasswordTextField:TGadget	= CreateTextField(3, 25+PNL_HEIGHT+2,MAINWINDOW_W-3-SLIDER_WIDTH-46-16, PNL_HEIGHT, ProxyPanel)
					'Print "VISIBLE"					
               EndIf
			   SetGadgetText (Proxy_PasswordTextField, ini_Proxypassword)
               ShowGadget(Proxy_PasswordTextField:TGadget)	


There has to be an easier way.


degac(Posted 2015) [#5]
Hi

just create 2 different textfield txt_hidden and txt_showed. Then just show/hide one of them as required.




Grisu(Posted 2015) [#6]
Yeah, at least I can get around recreating the textfield every time. Thanks!

I hoped to use just one though. Just changing the flag of the textfield itself somehow.


Henri(Posted 2015) [#7]
Hi,

use this function to change the mask in textfield (or remove it):
Function SetPasswordMask(textField:TGadget, mask:String="")	'If mask is empty then mask is removed
	
	If Not textField Then Return
	
	Local char:Int
	If mask Then char = Asc(mask)
	
	SendMessageW(QueryGadget(textField, QUERY_HWND), EM_SETPASSWORDCHAR, char, 0 )
	RedrawGadget(textField)
	
EndFunction

-Henri


Grisu(Posted 2015) [#8]
Perfect. Best solution. :)

Thanks!

Btw: BMX uses the "●" as default char.


degac(Posted 2015) [#9]
@Henry

Nice solution, but I suppose it's Windows only...