RE: win32lib: Tabbing between controls in/not in a group
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.
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)
|
Not Categorized, Please Help
|
|