>>>>>Each time I select a form from my application's menu, a copy (or additional copy) is displayed on my screen. My menu commands for each form in the system look like "do form FormName"
>>>>>
>>>>>Instead, I want a form selection from the menu to set the focus to the running copy (if a copy is currently running), or to start a new copy of the particular form if it is not currently running. I don't want two copies of the same form running at the same time. How do I accomplish this?
>>>>>
>>>>>Bob Cassady
>>>
>>>
>>>>In order to do that you must first check if your form is not already on screen. You can do that by scanning the _SCREEN.Forms collection.
>>>>
>>>>Vlad
>>>>
>>>
>>>
>>>Great approach Vlad. Thanks, it works fine.
>>>
>>>The only outstanding problem I have now is figuring out how to programatically make MyForm the active form when MyForm is selected from the menu, is already on the screen, but is not currently the active form.
>>>
>>>Bob
>>
>>LOCAL oForm
>>FOR EACH oForm IN _SCREEN.Forms
>> IF oForm.Name == "MyForm"
>> EXIT
>> ENDIF
>>ENDFOR
>>oForm.Activate()
>>
>>Vlad
>
>
>I wish that my computer could respond as fast as you do.
>
>Not only do I have an answer to my problem, but also a concept that I was missing.
>
>Thanks again
>
>Bob
>
>..............
>
>I couldn't actually get your code to work, but the following (based on your ideas) does work.
>
>function OneForm(tcFormName)
>****************************
>for i = 1 to _SCREEN.formcount
> if trim(upper(_SCREEN.forms(i).name)) == trim(upper(tcFormName))
> _SCREEN.forms(i).windowstate = 0 && in case the form is minimized
> _SCREEN.forms(i).Show()
> return
> endif
>endfor
>
>do form &tcFormName
>
>endfunc
>
>Bob
Yup, it should have been Show, not Activate. My FOR and your FOR are equivalent. Only that in "my" version is a little more clear (IMO). You don't need the TRIM applied to _SCREEN.forms(i).name.
You can also use:
DO FORM (tcFormName)
Be careful, you must have the form.name the same as the form file name in order to have this code working.
Vlad
Previous
Reply
View the map of this thread
View the map of this thread starting from this message only
View all messages of this thread
View all messages of this thread starting from this message only