[AccessD] moving focus off the tab page

Colby, John JColby at dispec.com
Tue Jul 20 12:31:01 CDT 2004


That is close...

It doesn't take into account whether a control is hidden or disabled - both
of those conditions will prevent the control from getting the focus.

Further it doesn't figure out whether a tab page has the focus.

But that is the general idea.

I wrote code to do what I needed already.  I was just answering Rocky's
question.

JWC

-----Original Message-----
From: Charlotte Foust [mailto:cfoust at infostatsystems.com]
Sent: Tuesday, July 20, 2004 1:02 PM
To: Access Developers discussion and problem solving
Subject: RE: [AccessD] moving focus off the tab page


I'm not sure this is what you're talking about, John, but I built this a
long time ago to handle a similar problem:

Public Function FirstFormControl(frm As Form, _
                                 Optional frmSection As Index = -1) As
String
  'created by Charlotte Foust 9/14/99
  'last modified 9/11/2000
  Dim ctl As Control
  Dim intTab As Integer
  Dim strCtlName As String
  Dim blnSkip As Boolean
  
  'Use the count of controls as the
  'maximum tab value
  intTab = frm.Count
  
  'Loop throught all controls on form
  For Each ctl In frm
    If frmSection <> -1 Then
      If ctl.Section <> frmSection Then
        blnSkip = True
      End If 'ctl.Section <> frmSection
    End If 'frmSection <> -1
    
    If Not blnSkip Then
      Select Case ctl.ControlType
        'If control can accept value
        'test its tab value against intTab.
        Case acTextBox, acOptionGroup, acComboBox, acListBox, _
            acCheckBox, acOptionButton, acCommandButton, _
            acToggleButton
          'If tab value less than intTab
          'set intTab = tab value and
          'set strCtlName = control name.
          If ctl.TabIndex < intTab Then
            If ctl.TabStop = True Then
              intTab = ctl.TabIndex
              strCtlName = ctl.Name
            End If 'ctl.TabStop = True
          End If 'ctl.TabIndex < intTab
      End Select 'Case ctl.ControlType
    End If 'not blnSkip
  Next 'ctl In frm
  
  'Return name of control with lowest tab value
  FirstFormControl = strCtlName
End Function 'FirstFormControl(frm As Form, _
                                 Optional frmSection As Index = -1)

Charlotte Foust


-----Original Message-----
From: Colby, John [mailto:JColby at dispec.com] 
Sent: Tuesday, July 20, 2004 8:09 AM
To: 'Access Developers discussion and problem solving'
Subject: RE: [AccessD] moving focus off the tab page


Rocky,

The question is "what is the desired control to set the focus in", NOT
how to set the focus.

In any form, there is no single "tab index 0" control.  If you have a
header with controls in it, there will be one there.  If you have a
footer with controls, there will be one there.  There will be one in the
main part of the form.  Furthermore, if you have tab controls, EACH page
of the tab control has it's own tab order etc.  So.. if I am in the
header and tap the tab key I go one place, if I am in the footer and tap
the tab key I go another, if I am in the main part of the form I go a
third, if I am in page1 of the tab control I go another, if I am in page
2 of the form I go another.....  WHICH CONTROL WILL RECEIVE THE FOCUS IF
I TAP THE TAB KEY?

To complicate matters further, just because a control has tab index set
to 0 doesn't mean it can get the focus.  It may be invisible, it may be
disabled, or it may simply have it's property that allows it to be
"tabbed into" set to false.  My question is...

How do I determine WHICH control would get the focus if the tab key were
tapped?  The answer varies depending on whether there are tabs (if so
which tab is currently selected?), whether the current focus is in the
header / footer / body of the form, etc.  UGLY question, and Access is
no help at all determining the answer (AFAICT).  

This is one of those "the stupid bastards know the answer" (the tab key
works doesn't it?) but they don't expose the answer to me so I can set
the focus to that control using SomeControl.SetFocus syntax.

JWC.

-----Original Message-----
From: Rocky Smolin - Beach Access Software [mailto:bchacc at san.rr.com]
Sent: Tuesday, July 20, 2004 11:34 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] moving focus off the tab page


John:

Why can't you use the _Open event of the form to se the focus to the
desired control?

Rocky

-- 
_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
-- 
_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com



More information about the AccessD mailing list