Skip to main content

Getting out of fullscreen mode in FileMaker Pro

In version 2 of Acquittal, our criminal defense case management app, we're doing some nifty stuff with windows, and that means we're finding out that even in FileMaker Pro 15, we still don't have quite all the tools we'd like for managing windows.  One problem is how to trap for the possibility that the user has switched into fullscreen mode. The other problem is how to get out of it.


Is this window in fullscreen mode?


This one's not too hard. This calc formula seems to do the trick:

Get ( WindowHeight ) = Get ( ScreenHeight ) and
Get ( WindowWidth ) = Get ( ScreenWidth)

That will return true if the window is in fullscreen mode, false if it's not.

Why does this matter? Because there are certain things that you can't do with a window if it's in fullscreen mode. In Acquittal, for example, there are times when we want to generate a second "sidecar" window, then display the main and sidecar windows side-by-side. Can't do it if the main window is in fullscreen mode!


So how do I get out of fullscreen mode?


What we're missing in FileMaker 15 is a script step that will exit fullscreen mode. Well, ideally, we'd have a scriptstep like "Toggle Fullscreen Window Mode". But while we hope for this in FileMaker 16, there is a workaround. There is always a workaround, probably more than one. Here's what I've come up with. Note: I'm using a little custom function 'WindowIsFullScreen01' with the formula described above.


If [ WindowIsFullScreen01 ]

   # Looks like fullscreen!

   Set Variable [ $window1 ; Value: "ABCDE" ]
   Set Variable [ $window2 ; Value: Get ( WindowName )
   Set Window Title [ Current Window ; New Title: $window1 ]

   New Window [ Style: Document ; Name: $window2 ]
   Adjust Window [ Maximize ]

   Close Window [ Name: $window1 ; Current file ]
   Select Window [ Name: $window2 ; Current file ]

End If

It's pretty straightforward. Create a new window, which will be clone of the original window except that it won't be fullscreen. Play with the window names so the new window ends up with the original window's name and so that the Close Window script step can target the original window. Et voilà!

By the way, I changed the original window's name to "ABCDE" in this example. In reality, I'd probably use a long random number. I mean, odds of there being another window named "ABCDE" seem pretty small, but if it did happen, I'd be pretty darned embarrassed.

Let me know if you have something better.


Comments

Post a Comment

Popular posts from this blog

Setting up OAUTH with Google in FileMaker 16

Setting up OAuth with Google in FileMaker 16 Posted by William Porter Intended audience: Intermediate to Advanced FileMaker developers Date of publication: 2017-June-06 Updated: 2018-June-06 One of the many exciting features in FileMaker 16 (released May 2017) is OAuth or Open Authentication. Open Authentication allows users to connect to a FileMaker database after authenticating with an external (non-FileMaker) account. At the present time, FileMaker supports OAuth through Google, Amazon and Microsoft. If you're a developer there are two main questions to answer. First, should I do this? And second, how do I do it? I'll answer the first question later. It's important. But the other question-- How  do I setup OAuth?--is answered in the attached document. I wrote this tutorial with the help of my friend and colleague Taylor Sharpe of Taylor Made Services , also here in Dallas. We provide step-by-step instructions on how to get your users authenticating in

Virtual List Basics

The concept The basic trick behind virtual lists is the wonderful GetValue() function. GetValue() takes two parameters: A list of return-delimited values A number specifying which value in the list to get For example say you have a field in a single record called “List of Values” and it contains the following:    Apple    Boy    Cat    Doorknob    Elephant    Fish When that record is selected, GetValue ( MYTABLE::List of Values ; 4 ) will return “Doorknob”. The brilliant idea is to replace the list of values stored in a field with a list in a global variable . The basic implementation, part one Create a table called VIRTUALLIST. In it, define these two fields: VALUE NUMBER: a number field Value_calc: calc field returning text value, = “GetValue ( $$VALUES; VALUENUMBER )”. Make sure that this value is an unstored calculation. Go to the layout for the VIRTUALLIST table and create some records. Later you can create hundreds or thousands, bu

More about why I like the new navigation part in FileMaker Pro 14

I myself didn't completely "get" the navigation layout part at first. In this post I want to clarify a few things about the benefits of this new feature. The new navigation layout part in FileMaker Pro 14 and FileMaker Pro 14 Advanced differs in two significant ways from the header/footer parts we've had since forever (and which we still have in 14): Navigation parts don't zoom Navigation parts don't scroll out of sight Well, it's a little messier than that, in reality. Let me elaborate on the messiness of it first, since the messiness may have some impact on why navigation parts took me a day or two to "get". First potential confusion: objects in navigation parts don't zoom, but they are not completely inflexible. If you grab the edge of the window and make the window wider (I'm not talking about zooming the content, I'm talking about actually enlarging the window) then any objects in a navigation part that are anchored to