FileMakerのスクリプトステップの「ウィンドウの調整[収まるようにサイズ変更]」は便利ですが、ちょっと引っかかる所があったのでメモを。

やりたかったこと

ウィンドウの調整[収まるようにサイズ変更]を実行した時点で、内容の高さがウィンドウ高さを超える場合、ウィンドウが下一杯まで広がって見づらいので、下側に少し隙間を開けたい。

引っかかった部分

オプションの説明では、

[収まるようにサイズ変更] オプションを選択すると、ウインドウのサイズは、レイアウトの項目すべてを表示できる最小サイズに変更されます。

となっています。内容がウィンドウ高さを超えなければ、内容のサイズまで縮めてくれるのですが、内容の高さがウィンドウを超える場合が困ります。

なので、「ウィンドウの移動/サイズ変更」ステップで、高さにこんなコードを書いてみました。

Let ( 
  bottom = Get ( ウインドウ上位置 ) + Get ( ウインドウ高さ );

  If ( Get ( ウインドウデスクトップ高さ )  =  bottom ; 
    Get ( ウインドウ高さ ) - 10 ; 
    Get ( ウインドウ高さ )
  )

)

高さがウィンドウサイズを超える場合、変数bottomの数値は、Get ( ウインドウデスクトップ高さ )と同じになるはず。その場合は、ウィンドウ高さを10縮めればよしと。

ところが、このコードは上手く動きませんでした。よくわからなかったので、同じスクリプト内でこんな内容のカスタムダイアログを出してみると、

Get ( ウインドウ上位置 )  & " + " &  Get ( ウインドウ高さ ) & " : " & $bottom & " : " & $window

「0 + 977 : 977 : 981」と表示されました。4ピクセル隙間が開いているようです。

結論

内容の高さが、「ウインドウ高さ」を超えるウィンドウに対して、「ウィンドウの調整[収まるようにサイズ変更]」を実行すると、下に4ピクセル隙間が開く。

解決方法

4ピクセルを足して解決。

ちなみに、この4ピクセルという値はWindowsでもMacでも共通でした(FileMaker11で確認)。

上のコードはこんな風に修正。

Let ( 
  bottom = Get ( ウインドウ上位置 ) + Get ( ウインドウ高さ );

  If ( Get ( ウインドウデスクトップ高さ )  =  bottom + 4; 
    Get ( ウインドウ高さ ) - 10 ; 
    Get ( ウインドウ高さ )
  )

)

FileMaker記事一覧

Template by JoomlaShine