RE: win32lib: Tabbing between controls in/not in a group

new topic     » topic index » view thread      » older message » newer message

Pete Lomax wrote:
> How can I tab between controls when one of them is in a group?
> Once it gets into the group, the cursor does not want to come out.
> Run the following program and press Tab five or more times to see what
> I mean (using 0.60.0; under 0.59.2 it skips the group, but that is not
> what I want either):
> 
> --
> -- test
> --
> include win32lib.ew
> constant
> MOUSEOPT = create( Window, "Mouse Options", 0, 120, 70, 340,
> 200,{WS_DLGFRAME,WS_SYSMENU}),
> MOUSESCROLLG = create( Group, "Scroll lines", MOUSEOPT, 10, 10, 95,
> 45, 0),
> MOUSESCROLL = create( EditText, "", MOUSESCROLLG, 15, 15, 30, 20, 0),
> ASIT = create( LText, "Autosave interval in seconds", MOUSEOPT,
> 10,70,200,20,0),
> ASI = create( EditText, "", MOUSEOPT, 210, 70, 60, 20, 0 ),
> ASTS = create( CheckBox, "Autosave on Tab Switch?", MOUSEOPT,
> 10,100,200,20,0),
> MOK = create( DefPushButton, "OK", MOUSEOPT, 130, 130, 65, 25, 0 )
> 
> WinMain(MOUSEOPT,Normal)

Yep.  I've run into this difficulty as well.  Here's the procedure I
use--it's not the most efficient solution, but it works. blink  Feel free to
improve upon it.

Also, note the use of the win32lib function setTabStops().

include win32lib.ew
constant
MOUSEOPT = create( Window, "Mouse Options", 0, 120, 70, 340,
200,{WS_DLGFRAME,WS_SYSMENU}),
MOUSESCROLLG = create( Group, "Scroll lines", MOUSEOPT, 10, 10, 95,
45, 0),
MOUSESCROLL = create( EditText, "", MOUSESCROLLG, 15, 15, 30, 20, 0),
ASIT = create( LText, "Autosave interval in seconds", MOUSEOPT,
10,70,200,20,0),
ASI = create( EditText, "", MOUSEOPT, 210, 70, 60, 20, 0 ),
ASTS = create( CheckBox, "Autosave on Tab Switch?", MOUSEOPT,
10,100,200,20,0),
MOK = create( DefPushButton, "OK", MOUSEOPT, 130, 130, 65, 25, 0 )

procedure setTabOrder(sequence flds)
--	Sets the global tabbing order for a window.
--	Using this procedure allows tabbing in and out of parent controls,
--	such as Windows, Groups, TabItems, etc., so that the user is not
"trapped"
--	when he tabs to a control inside one of these.
--	All control ids contained in flds must be in the same window.
	integer
		parent
	sequence
		parents
	parents = {}
	for i = 1 to length(flds) do
		parent = findParent(flds[i])
		if not find(parent, parents) then
			parents &= parent
		end if
	end for
	for i = 1 to length(parents) do
		VOID = setTabStops(parents[i], flds)
	end for
end procedure

setTabOrder({MOUSESCROLL, ASI, ASTS, MOK})

WinMain(MOUSEOPT,Normal)


new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu