FileMaker ウインドウコントロールTips
- ほうがん
- 3月20日
- 読了時間: 6分

はじめに
システム開発担当のほうがんです。弊社では月半分がリモートでの在宅勤務といった勤務形態となっておりまして、私は自宅ではノートPC画面も合わせると計3台のモニタを見ながらFileMakerでシステムを組んでいます。
そのうち最大のモニタは2560*1440なので、お客様の多くが使っておられる1920*1080の画面サイズに合わせたFileMakerレイアウト編集時でも右側のオブジェクトパネル、左側のインスペクタパネルを開いた状態でも余裕で全表示出来ます、サイドパネルを閉じることなく、1920*1080のレイアウトが見えているのですごく快適です。
昨今はこのようにPCに2台以上のモニタを繋いで使用されている方も多いかと思います。
さてさて、今回はFileMakerで複数ウインドウの制御に関するTips紹介となります。
「カード」スタイル ウインドウのTips
現在開いているウインドウのボタンからのスクリプトで、新規ウインドウで「カード」スタイルでウインドウを開いた場合、「カード」スタイルなのでステータスツールバーも表示出来ないのでレイアウト編集がやりにくいと思われませんでしょうか?具体的には

以上のような画面で、「新規カードウインドウ」ボタンに以下のスクリプトを設定した場合です。
新規ウインドウ[スタイル: カード; 使用するレイアウト:「カード」]
ウインドウの調整[収まるようにサイズ変更]
このボタンを押して「カード」ウインドウを開くと

となります。
この「カードウインドウ」画面のレイアウト内容変更したい、となった場合に、
この場で修正出来ればと思われたことはないでしょうか?
「カード」スタイルなのでショートカットを使用してもステータスツールが表示出来ず、このままでは編集出来ません。
仕方なくこの画面を閉じて、「カード」表示用のレイアウトに移動して、再度、編集して、この操作を行ってみる。を繰り返さないといけません。手間ですよねぇ。
アカウントが開発者の場合には、「カード」スタイルはなく、「ドキュメント」スタイルで開く事が出来れば、ステータスツールが表示出来るので新規に開いたウインドウの編集がやりやすいです。
先のスクリプトを管理者の場合にはIfで分岐する事で、この機能を実現します。
If [ Get ( 現在のアクセス権セット名 ) ≠ "[Full Access]" ]
新規ウインドウ[スタイル: カード; 使用するレイアウト:「カード」]
Else
新規ウインドウ[スタイル: ドキュメント; 使用するレイアウト:「カード」]
End If
ウインドウの調整[収まるようにサイズ変更]
と変更します
こうすることで、管理者アカウントで入った場合には、レイアウトの編集が出来る「ドキュメント」スタイルでウインドウが開きますのでステータスツールが使えるようになりレイアウト編集が直接出来るようになります。

「ドキュメント」スタイル ウインドウのTips
次に「ドキュメント」スタイルで新規ウインドウを開いた場合の問題点ですが、元の画面をユーザーが触れるので「新規ウインドウ」を閉じない状態で更に「新規ドキュメントウインドウ」ボタンを押せてしまいます。この場合、「ウインドウ-1」「ウインドウ-2」と無限に何枚ものウインドウが開いていてしまします。

具体的に説明しますと、
「新規ドキュメントウインドウ」ボタンを作り、以下のスクリプトを割り当てます。
新規ウインドウ [スタイル: ドキュメント; 使用するレイアウト: 「ドキュメント」]
ウインドウの調整 [収まるようにサイズ調整]
この場合、ユーザーは元の画面のボタンが触れるので「新規ウインドウ」を閉じない状態で更に「新規ドキュメントウインドウ」ボタンを押せてしまいます。この場合、「ウインドウ-1」「ウインドウ-2」と無限に何枚ものウインドウが開いていってしまいます。これが、上の状態です。
これだとよろしくないですよね。
さて、対策です。
先のスクリプトを修正します。
前提として、開くウインドウ固有の名前を決めます。今回は「ダイアログ」とします。
開くレイアウトには「ポップアップ」と名前を付けます。
If [ PatternCount ( WindowNames ; "ダイアログ" ) = 1 ]
ウインドウを選択 [名前: “ダイアログ”; 現在のファイル]
Else
新規ウインドウ [スタイル: ドキュメント;名前 : “ダイアログ” ; 使用するレイアウト: 「ポップアップ」 ]
EndIf
ウインドウの調整 [収まるようにサイズ調整]
このウインドウ名「ダイアログ」が開いているウインドウの中にあれば、そのウインドウを選択して再度最前面に表示します。「ダイアログ」という名前のウインドウが無ければ、新規ウインドウで「ダイアログ」というウインドウ名で開きます。
「WindowName」は現在開いているウインドウの名前一覧を取得する関数です。
つまり、PatternCount ( WindowNames ; "ダイアログ" ) = 1 は「ダイアログ」というウインドウが既に開いている判定になります。
これを利用する事「ドキュメント」スタイルでウインドウを開く場合でも、常に1つのウインドウだけを開くことが出来ます。
応用編 複数「ドキュメント」スタイル ウインドウコントロール
さて、はじめにマルチモニタの話をしました。この複数「ドキュメント」スタイルのウインドウを活用してマルチモニタ環境でFileMakerを便利に使ってみようというのが応用編です。
例として、企業というテーブルがあるとして1画面目には、「企業一覧」があり、2画面目には「株価チャート」という2画面構成のカスタムAppを作成するとします。
動作としては1画面目の「企業一覧」の企業をクリックした際には、2画面目「株価チャート」が選択された「企業」に連動して切り替わるというイメージです。

今回も前提として2画面目右を「チャート」というウインドウ名とします。
1920*1080のモニタが2面あるとして、左モニタ側に「企業一覧」を開き、一覧の「企業名」上に透明ボタンを作成します。
透明ボタンに割り当てるスクリプトは以下の通りです。
変数を設定 [$企業ID ; 企業:: 企業ID]
#チャート画面が開いて無ければ新規で開く 開いていればそのウインドウを使用する
If [ PatternCount ( WindowNames ; "チャート" ) = 1 ]
ウインドウを選択 [名前: “チャート”; 現在のファイル]
Else
新規ウインドウ [スタイル: ドキュメント;名前: “チャート” ; 使用するレイアウト: 「チャート」(企業);左: 1921 ]
End If
検索モードに切り替え [一時停止:オフ ]
フィールド設定 [企業::企業ID; $企業ID ]
レコード/検索条件確定[ダイアログあり:オフ]
検索実行[]
ウインドウの調整 [最大化]
このスクリプトで、ダブルモニタの左側にある「企業名」ボタンをクリックした際にダブルモニタの右側に「チャート」というウインドウで対象企業の株価チャートを画面一杯に表示するという事が出来ます。
この部分の肝は、新規ウインドウ「チャート」を開いた際に「左端からの位置」に左側のモニタよりも大きい値を設定するという事になります。
新規ウインドウ [スタイル: ドキュメント;使用するレイアウト: チャート(企業);左: 1921 ]
さいごに
如何だったでしょうか?この機能を応用すれば、複数「ドキュメント」ウインドウが自在にコントロールできるようになります。別ウインドウを連携して別のレイアウトに変更する事も出来ます。
モニタが3画面なら、3画面目のモニタ内の座標の左位置に初期値をセットすれば3画面でも使えますし、同じく4画面以上でも自在にコントロール可能です。
ログインスクリプトで、常に2画面にFileMakerウインドウを開いた状態にすることも出来ます。
この知識があれば、色々応用が出来ますので、マルチモニタ環境で操作性の良いカスタムApp作成をぜひお試しください。