David,
Make your variables global so the assignment is not local then,
When opening up the dialog and it still exists, keep it and place focus
where you want focus inside that window, or object inside...
Then in the original setting up the dialog and when closing that window,
have it set it to Nothing!
Example:
' Global:
Dim MyDialog: Set MyDialog = Nothing
Sub HK1(myKeyId)
'This routine is called when the hotkey Alt-Windows-C is pressed.
If Keyboard.KeyDescriberActive Then
Speak myStrings(myKeyId & "_Description")
Else
'Main routine functionality goes here
If MyDialog Is Nothing Then
Queue "OpenMyAppWin"
Else
MyDialog.window.Focus
End IfKeyboard.KeyDescriberActive.
End Sub 'HK1.
Sent: Friday, October 07, 2016 9:11 PM
Subject: Single Instance Dialog Issue
Got a challenge here. I want to make sure only ONE instance of my dialog
will be open, at any given time. The user will open the dialog with the
Hotkey Win-c. But even if he tabs away from the dialog, and then once
again hit Win-C, he should land in the already open dialog; not in a
brand new window. Just like, when you hit the Ctrl-Backslash, you always
land in one and same instance of the Window-Eyes Controlpanel.
Below you will find the cut-out of my code, that has to do with the
opening of the dialog. In my Opening sub, I do the lines:
MyDialog.window.Activate
MyDialog.window.Focus
But even this does not seem to fix my issue.
I am all learning ears, to any feedback you may have, or any good
practice that you may want to share on this part.
Thanks to all,
---Snip-it:
Sub HK1(myKeyId)
'This routine is called when the hotkey Alt-Windows-C is pressed.
If Keyboard.KeyDescriberActive Then
Speak myStrings(myKeyId & "_Description")
Else
'Main routine functionality goes here
Queue "OpenMyAppWin"
End IfKeyboard.KeyDescriberActive.
End Sub 'HK1.
Sub OpenMyAppWin()
Dim MyDialog: Set MyDialog = Nothing
' Bring up the dialog:
If MyDialog Is Nothing Then
Set MyDialog = Dialog( myXMLFile, "MyAppMainDialog",
"EHMainDialog")
Else
MyDialog.window.Activate
MyDialog.window.Focus
End If 'MyDialog Is Nothing.
' Room Cleaning:
Set MyDialog = Nothing
End Sub 'OpenMyAppWin.
Function EHMainDialog( dObj, dEvent, dId, dControl)
Blah-blah-blah...
End Function 'EHMainDialog.
---End Of Snip.
--
David
_______________________________________________
Any views or opinions presented in this email are solely those of the author
and do not necessarily represent those of Ai Squared.
For membership options, visit
http://lists.window-eyes.com/options.cgi/scripting-window-eyes.com/lab4me%40fltg.net.
For subscription options, visit
http://lists.window-eyes.com/listinfo.cgi/scripting-window-eyes.com
List archives can be found at
http://lists.window-eyes.com/private.cgi/scripting-window-eyes.com
---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
_______________________________________________
Any views or opinions presented in this email are solely those of the author
and do not necessarily represent those of Ai Squared.
For membership options, visit
http://lists.window-eyes.com/options.cgi/scripting-window-eyes.com/archive%40mail-archive.com.
For subscription options, visit
http://lists.window-eyes.com/listinfo.cgi/scripting-window-eyes.com
List archives can be found at
http://lists.window-eyes.com/private.cgi/scripting-window-eyes.com