rlinsurf Posted December 21, 2006 Posted December 21, 2006 I have a script which is meant to copy the field contents if in Browse mode. But I need it to simply enter the filed if in Find Mode. Is there a calculation or script step which can determine which mode the user is in?
Inky Phil Posted December 21, 2006 Posted December 21, 2006 Get(WindowMode) will return 0 for browse mode, 1 for find mode or 2 for preview mode HTH Phil
rlinsurf Posted December 21, 2006 Author Posted December 21, 2006 (edited) That's great. Thank you Ok... sorry, but -- now what do I do? I've actually been messing around with this for the past few hours and can't figure out how to allow the user to enter any of fields which have this button assigned to them. Or even to know what field they've clicked on. EDITED: I'm in 8.5 advanced, not dev 7. Have to change that Edited December 21, 2006 by Guest
Inky Phil Posted December 21, 2006 Posted December 21, 2006 Script something like this If Get(WindowMode)=0 Copy Select; Get(Scriptparameter) endif If Get(WindowMode)=1 Go to field(GetScriptparameter) endif If you pass the name of the field in each case as the script parameter you will be able to attach this same script to each field. Wherever it is used, if the user is in browse mode it will copy the contents of the field they have just clicked in or if they are in find mode it will place them in the field they have just clicked into Hope that helps Merry Christmas Phil
rlinsurf Posted December 21, 2006 Author Posted December 21, 2006 Hi, Phil-- Thank you. Merry Xmas to you and yours as well I've actually been trying something similar. If you pass the name of the field in each case as the script parameter you will be able to attach this same script to each field. The issue is how to do that? For example, get[what]? If I use get[activefieldname] I get that it's not active because the cursor can't enter it -- the button wont let it. So how would I know what field I'm in?
Inky Phil Posted December 21, 2006 Posted December 21, 2006 I have just tried to do a dem file to demonstrate my idea but I have just discovered that you cannot apply a Get(scriptparameter) to a copy or go to field script step so that is my theory up the swanny!! Sorry about that, I have used this method so often in a similiar fashion but not, as it happens with those two script steps. Once again I apologise for misleading you Phil
Inky Phil Posted December 21, 2006 Posted December 21, 2006 OK then, now that I have stopped blushing with embarrasment at my faux-pas and have given it a little more thought.... Since we cannot use a script parameter with those two steps the only other solution I can come up with is to have seperate script steps for each field with the field names hard coded into the script but with each set surrounded by a script parameter eg If Get(WindowMode)=0 If Get(ScriptParametr)=1 Copy Select; Name endif If Get(ScriptParametr)=2 Copy Select; Number endif endif If Get(WindowMode)=1 If Get(ScriptParametr)=1 Go to field(name) endif If Get(ScriptParametr)=2 Go to field(number) endif endif Now I KNOW we can do that one. It might just get quite long if you have a bazzillion fields to apply it to but it would work - Phew!! Phil :goodluck:
comment Posted December 21, 2006 Posted December 21, 2006 In version 8.5, you can assign object names to fields on a layout, and use the Go to Object script step instead of Go to Field. There's probably a more elegant solution, but we'd have to know what is the ultimate purpose here.
rlinsurf Posted December 21, 2006 Author Posted December 21, 2006 (edited) Hi-- Phil, I don't know about adding in all those fields. I'm also still not sure what parameters you mean. Basically, the intent here is have a set of layouts where the user has no ability to enter any fields in Browse Mode, but can copy their contents when clicked, and can enter find criteria in Find Mode. So I have all the fields on several layouts set to only allow entry in Find Mode. I then setup what I thought would be a simple script. It went: If [get(ActiveFieldContents) ≠ ""] Copy[select] Else EndIf I then assign this script to each field as a button assignment. This actually works perfectly to copy the contents in Browse mode when they user clicks on any field. What I didn't realize is that this would prevent the user from entering any Find Criteria. My best thought at this point was to create a new duplicate layout with all the fields again accessible in Find Mode -- but without any script assignments. I named each duplicate layout with the same name as the original, but added "_FIND" to the layout name, and made sure the layout did not appear in the layout menu. So I setup the script as: If [Get(ActiveFieldContents) ≠ ""] Copy[select] Else If [Get(WindowMode) = 1] Go to Layout [Get(LayoutName) & "_FIND")] Enter Find Mode [Pause] Go to Layout [Original Layout] End If This also worked. But here I ran into another issue. No matter what I do, I can't get the user to not have to press the return or enter key twice to perform the find. If Paused, when return is pressed, it does go back to the original layout, but then goes into Find Mode and waits for the additional click to perform the Find. If I put in a Perform Find [no dialog] step, it does the same thing. So at that point I knew I was stuck... EDITED: Well -- spoke too soon. Even the first part doesn't work. If all the fields are assigned at once as a button, the FMP copies *all* the contents to the clipboard. But it doesn't copy anything when you assign the button to one field. Edited December 21, 2006 by Guest
mr_vodka Posted December 21, 2006 Posted December 21, 2006 When calling a script, you can pass a script parameter to it via a button or a master script etc. In your case, as Comment pointed out, you can name all of your fields with Object Names (new to FM8.5). So you can Pass the Object Name as the Script Parameter to your script. Just have the fields themselves be buttons and run the script with the parameters attached. If [ Get (WindowMode) = 0 ] Go to Object [Object Name: Get (ScriptParameter)] Copy [ Select ] Else If [ Get (WindowMode) = 1 ] Go to Object [Object Name: Get (ScriptParameter)] End If
rlinsurf Posted December 21, 2006 Author Posted December 21, 2006 Ah, right-- I did see that. That looks like it'll do 'er Thanks ;)
Recommended Posts
This topic is 6548 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