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.


Popular posts from this blog

Setting up OAUTH with Google in FileMaker 16

Setting up OAuth with Google in FileMaker 16Posted 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 into your FileMaker databas…

Virtual List Basics

The conceptThe 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:

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 oneCreate 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, but right now just ten will do. Use ReplaceFieldContents to po…