Textfield RETURN_KEY tweak

BlitzMax Forums/MaxGUI Module/Textfield RETURN_KEY tweak

Henri(Posted 2014) [#1]
Hi,

textfields won't register RETURN_KEY by default, but with a little tweak this is possible.

Add this constant in Gadget.bmx file:
const TEXTFIELD_MULTILINE = 2


...and in win32maxguiex.bmx line 2285 right after this statement:
If style&TEXTFIELD_PASSWORD Then wstyle:|ES_PASSWORD

...add this line:
If style&TEXTFIELD_MULTILINE Then wstyle:|ES_MULTILINE


Here is a little example:
Strict

Import maxgui.drivers

Local win:tgadget = CreateWindow("Window",200,200,300,200,Null)
Local lab:tgadget = CreateLabel("Type something and press enter:",6,40,250,23,win)
Local txt:tgadget = CreateTextField(6,70,250,23,win,TEXTFIELD_MULTILINE)

SetGadgetFilter(txt,TextFilter)

Repeat
	WaitEvent()
	Select EventID()
		Case EVENT_WINDOWCLOSE	End
	EndSelect
Forever

Function TextFilter(event:TEvent,context:Object)

	If Not event Then Return Null
		
	Select event.id
		Case EVENT_KEYDOWN
			Select event.data
				Case KEY_RETURN
					Notify "You pressed RETURN_KEY"
					Return False
			EndSelect
	EndSelect
	
	Return True
EndFunction


-Henri


Henri(Posted 2014) [#2]
There seems to be a little ghosting issue with this tweak, but if I comment out...
Method WndProc(hwnd,msg,wp,lp)
		Local event:TEvent
		Select msg
			Case WM_ERASEBKGND
				'Return 1
...Return 1 from TWindowsTextfield-->WndProc() then everything looks normal.

-Henri


*(Posted 2014) [#3]
why not just have a hidden OK button?

that way its easy to sort :)


Henri(Posted 2014) [#4]
This is bit more precise and bit more native for those that prefer it

-Henri