ron G Posted March 31, 2012 Posted March 31, 2012 I have a main layout called Members. On it, you can click a "setup" button to open a window that shows setup information. I want to make sure that only ONE instance of SETUP is open. What is the best way to look at the open windows and see if there is one called "setup" all ready open? Thanks Ron
RodSierra Posted March 31, 2012 Posted March 31, 2012 Try PatternCount ( WindowNames ( Get ( FileName ) ) ; "Setup" )
bcooney Posted March 31, 2012 Posted March 31, 2012 Curious, your "main layout" sounds as if it is a preference table. Why is it called "Members?"
ron G Posted March 31, 2012 Author Posted March 31, 2012 Try PatternCount ( WindowNames ( Get ( FileName ) ) ; "Setup" ) Thanks for the 'code'. I am storing it away. I had the epiphany this morning that what I needed to do was set $$variable=$$variable+1 each time Setup was opened and then check if $$Variable was >1. If so, just open a custom dialog, close the window and set $$Variable=0. Thanks again Ron
Vaughan Posted April 1, 2012 Posted April 1, 2012 This would be better: not IsEmpty( FilterValues ( WindowNames ( Get ( FileName ) ) ; "Setup" ) ) Why do you need to ensure there is only one window open with that layout? Is this restriction for the local user or all users of a hosted solution?
ron G Posted April 1, 2012 Author Posted April 1, 2012 Where would I put that code? If I put it in the module that calls the window, then the window closes and consequently never opens. My thinking was that if I use a $$variable to keep track of how many Setup windows are open I can insure that only 1 is open. Because of the relationship of Setup to Members, the Setup portal does not allow me to directly add or delete records. Instead I have to open another window, specify an appropriate layout an add or delete a row in it to have the appropriate change show in the portal. When there is more than one instance of the Setup window open, I 'sometimes' (isn't that weird) get a FM message about how I need to 'Add a record...' In this case, I can't even edit anything in the portal. So, I limit Setup to one instance and don't (so far) have this problem.
Vaughan Posted April 1, 2012 Posted April 1, 2012 Sounds like you're trying to solve the wrong problem: you need to fix the error message. Could be a relationship issue. Forget all the variables and stuff, you are over-complicating things. A list of windows already exists and it's managed by FMP, it's in the WindowNames function. There is no need to create your own list of windows. All you need to do is see whether a window with the name "Settings" already exists. If it does, select it and it will come to the front. If it does not exist then open one up. That code would be used like this: If [ not IsEmpty( FilterValues ( WindowNames ( Get ( FileName ) ) ; "Setup" ) ) ] Select WIndow [ "Setup" ] Else <steps to open the Setup window> End If
ron G Posted April 1, 2012 Author Posted April 1, 2012 Sounds like you're trying to solve the wrong problem: you need to fix the error message. Could be a relationship issue. Forget all the variables and stuff, you are over-complicating things. A list of windows already exists and it's managed by FMP, it's in the WindowNames function. There is no need to create your own list of windows. All you need to do is see whether a window with the name "Settings" already exists. If it does, select it and it will come to the front. If it does not exist then open one up. That code would be used like this: If [ not IsEmpty( FilterValues ( WindowNames ( Get ( FileName ) ) ; "Setup" ) ) ] Select WIndow [ "Setup" ] Else <steps to open the Setup window> End If "Ah, I see... Said the blind man as he picked up his hammer and saw." Your solution looks to be both simple and efficient. I got 'my' solution' to work but as you said it is unnecessarily complicated. I look forward to making the change. Thank you for the instruction... Grasshopper
ron G Posted April 5, 2012 Author Posted April 5, 2012 Sounds like you're trying to solve the wrong problem: you need to fix the error message. Could be a relationship issue. Forget all the variables and stuff, you are over-complicating things. A list of windows already exists and it's managed by FMP, it's in the WindowNames function. There is no need to create your own list of windows. All you need to do is see whether a window with the name "Settings" already exists. If it does, select it and it will come to the front. If it does not exist then open one up. That code would be used like this: If [ not IsEmpty( FilterValues ( WindowNames ( Get ( FileName ) ) ; "Setup" ) ) ] Select WIndow [ "Setup" ] Else <steps to open the Setup window> End If I just want you know how much I appreciate your code. So far I have used to 3 times to see if the proper window/layout is open. It has resulted in a *lot* of inefficient code (the way I used to do it) being thrown out. Your reply and the code has been a real eye opener and time saver. Thanks again. Ron
Vaughan Posted April 5, 2012 Posted April 5, 2012 There is no simple way to test weather a "layout" is open, because layouts don't really open. They get displayed in windows, and the layout that the window displays can be changed. If you definitively wanted to know when a layout was ever displayed you could set up a an object on the layout with conditional formatting that sets a global variable to a value. When the layout is displayed it will set the global variable, so a test for the variable will show whether the layout has been displayed.
Recommended Posts
This topic is 4888 days old. Please don't post here. Open a new topic instead.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now