On Init SetFocus Issue
Posted: Sat Nov 03, 2007 1:01 pm
When I have button and wbrowse controls in a dialog, I can not start with the browse focussed even when i use on init browse:setfocus. Here is an example.
I want the browse to get focus when the dialog starts. Despite the ON INIT clause, the focus is on the button.
There are two workarounds though. But I think this should work without workarounds. Can someone help me how to set focus to the browse initially ?
I adopt one of the following two workarounds, but they are workarounds. I guess it should work without any workarounds:
1. After defining the button, oBtn:nStyle -= WS_TABSTOP. Then naturally oBrw is the first control with tabstop and so it gets the focus anyway.
2. Define the browse first and define the button in the subsequent program code. That way browse gets 1st tab stop and button gets the second tabstop despite their appearance.
But I want to focus on the browse initially without disturbing the taborders of the controls. How can I do this please?
Code: Select all
FUNCTION BrwFocusTest
LOCAL oDlg, oBrw, oBtn
USE CUSTOMER NEW ALIAS CUST
DEFINE DIALOG oDlg SIZE 200,200 PIXEL
@ 10,10 BUTTON oBtn PROMPT 'Button' SIZE 40,12 PIXEL OF oDlg
@ 30,10 LISTBOX oBrw FIELDS ;
SIZE 80, 60 PIXEL OF oDlg ;
ALIAS 'CUST'
oBrw:nClrBackFocus := CLR_GREEN
oBrw:nClrForeFocus := CLR_WHITE
ACTIVATE DIALOG oDlg CENTER ;
ON INIT oBrw:SetFocus()
RETURN NIL
There are two workarounds though. But I think this should work without workarounds. Can someone help me how to set focus to the browse initially ?
I adopt one of the following two workarounds, but they are workarounds. I guess it should work without any workarounds:
1. After defining the button, oBtn:nStyle -= WS_TABSTOP. Then naturally oBrw is the first control with tabstop and so it gets the focus anyway.
2. Define the browse first and define the button in the subsequent program code. That way browse gets 1st tab stop and button gets the second tabstop despite their appearance.
But I want to focus on the browse initially without disturbing the taborders of the controls. How can I do this please?