Solved

How to identify the name of current subform that's in focus on access form

Posted on 2011-09-19
11
369 Views
Last Modified: 2012-06-21
Hi,
I have a form named frmStudentServiceAndQtrDetails.  On it is a subform named frmsubQtrClassDetails.  
I have a button on the parent form named Help.  I work with blind users, and I'd like them to be able to Alt h to open an input box, informing them exactly what form they are in.  (It is a busy form and would be easy to get lost in.)  My input box works fine except I can seem to get the right syntax to find that we are in the subform.  
Any ideas appreciated.  Thanks!
0
Comment
Question by:Not2ruthless
  • 5
  • 3
  • 2
11 Comments
 
LVL 61

Expert Comment

by:mbizup
ID: 36564448
If you have a button on your subform, you can use the following code to determine the name of the subform that the button is on:

MsgBox Me.ActiveControl.Parent.Name


<I have a button on the parent form named Help.>
The trouble I see with this approach is that if a user is editing subform data and clicks a button on the main form to determine which subform they were editing, they are no longer in the subform - but back in the main form. (so the answer to the question "where am I" when clicking a button on the main form would always be "the main form")
0
 

Author Comment

by:Not2ruthless
ID: 36564463
Thanks.  The Button itself is on the main form.  I'd like to use that same help button to determine what form (the main or sub), that I'm in.  If it's not possible, I could put two help buttons but would like to avoid it
Ruth.  
0
 
LVL 61

Expert Comment

by:mbizup
ID: 36564476
<< to determine what form (the main or sub), that I'm in >>

That's the problem right there... as soon as you click a main form button you are in the main form, regardless of whether you were in the main or sub form before clicking the button.



0
 

Author Comment

by:Not2ruthless
ID: 36564498
Just for kicks, is there any syntax at all to determine the name of the subform one is in at any given time?  (Pretending I don't have a Help Button that would divert focus).  Now I'm just curious :)
0
 
LVL 47

Accepted Solution

by:
Dale Fye (Access MVP) earned 125 total points
ID: 36564523
Are your "blind users" totally blind or just partially?

I generally use conditional formatting on all of my textboxes and combo boxes which changes the background color of the control when the control has the focus.

as mbizup states, if you are clicking a button on the main form, or using Alt_H as a shortcut for that control, then you have a minor, but not insurmountable problem.

You can use the Screen.Previous control property to identify the control that had the focus prior to clicking on your Help button on pressing Alt_H.  Assuming your Alt_H is a shortcut to cmd_Help, it might look like:

Private Sub cmd_Help_Click

    if Screen.PreviousControl.ControlType = acSubform then
        msgbox "You are on subform: " & Screen.PreviousControl.Name
    Else
       ' some other code here
    end if

End sub

If you want to indicate what control had the focus inside that subform, you have to drill down

    if Screen.PreviousControl.ControlType = acSubform Then
        set frm = Screen.PreviousControl.Form
        set ctrl = frm.ActiveControl
        msgbox "You are in the " & ctrl.name & " control on subform: " & frm.name
    end if




If you are using the forms Key_Preview and KeyDown event to check for Alt_H
0
Free Gift Card with Acronis Backup Purchase!

Backup any data in any location: local and remote systems, physical and virtual servers, private and public clouds, Macs and PCs, tablets and mobile devices, & more! For limited time only, buy any Acronis backup products and get a FREE Amazon/Best Buy gift card worth up to $200!

 
LVL 47

Expert Comment

by:Dale Fye (Access MVP)
ID: 36564527
If you are using KeyPreview and the KeyDown event to test for Alt_H, then you really don't have a problem.
0
 

Author Comment

by:Not2ruthless
ID: 36564547
Fyed, the previous control did the trick.  I work with totally blind users, but like to make it user friendly for us photo-dependents as well!!

Thanks mBizup and Fyed!!
0
 

Author Comment

by:Not2ruthless
ID: 36564570
I've requested that this question be closed as follows:

Accepted answer: 0 points for Not2ruthless's comment http:/Q_27316697.html#36564547

for the following reason:

Didn't mean to use my comment as the solution, sorry!
0
 

Author Comment

by:Not2ruthless
ID: 36564571
I accidently added a comment before accepting solution by Fyed.  Would like to retract that and Accept Fyed's solution.
So am objecting to my own non-solution :)
0
 
LVL 61

Expert Comment

by:mbizup
ID: 36566021
fyed,

<< Screen.PreviousControl.Name >>

Nice trick!  

I was envisioning some convoluted method of determining the user's "last location" by using global variables.

It makes sense that there is a "PreviousControl" for this type of need...

I learned something new :)


Ruth,

<So am objecting to my own non-solution :) >

Your objection cancelled the pending closure which was marking your answer as accepted... the button you need to accept fyed's solution should be visible to you again.

0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

In the article entitled Working with Objects – Part 1 (http://www.experts-exchange.com/Microsoft/Development/MS_Access/A_4942-Working-with-Objects-Part-1.html), you learned the basics of working with objects, properties, methods, and events. In Work…
Overview: This article:       (a) explains one principle method to cross-reference invoice items in Quickbooks®       (b) explores the reasons one might need to cross-reference invoice items       (c) provides a sample process for creating a M…
Familiarize people with the process of utilizing SQL Server views from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Access…
In Microsoft Access, learn different ways of passing a string value within a string argument. Also learn what a “Type Mis-match” error is about.

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now