FileMaker のスクリプトの中で新規ウインドウを開くことがあると思いますが、現在ウインドウのちょうど真ん中に開けたら良いなーとよく思います。応用はさておき、その基本のところだけサンプル作っておきましょうか。
FileMakerでよく使う小ネタがあるんですが、大抵の自作ファイルは複雑さが混ざり込んで単機能部分でさえ使い回すのが困難なことになってしまってます。なので自分のためにも初心に立ち返り、小ネタの単発リファレンス的なファイルを作っておこうとして、実際にいくつか作ってみました。そのうちの一つ、新規ウインドウを中央に開くです。 ↓サンプルファイルあります(URL訂正済み)
ウインドウを中央に開く位置は、現状サイズと比較した次の計算で得ることができます。
// $top, $left, $w, $h ... 現在ウインドウの位置とサイズ
// $newW, $newH ... 新規ウインドウの指定サイズ
// $newTop, $newLeft ... 新規ウインドウの上位置と左位置
// 新規ウインドウの位置
$newTop = $top + ( ($h - $newH )/2 );
$newleft = $left + ( ($w - $newW )/2 )
新規ウインドウで開くレイアウト名とサイズ($newW, $newH)をスクリプト引数にセットすることを前提にすると汎用的なスクリプトを作成できます。
#============================================================= #新規ウインドウを現在ウインドウ上に中央配置 # 新規ウインドウのレイアウト名とサイズをカンマ区切りでスクリプト引数指定 例: "新規ウインドウ,480, 200" #============================================================= #現在のウインドウサイズと位置 変数を設定 [ $現在のウインドウサイズ; 値:Let ( [
$w = Get ( ウインドウ幅 );
$h = Get ( ウインドウ高さ );
$top = Get ( ウインドウ上位置 );
$left = Get ( ウインドウ左位置 )
]; "" ) ]
#新規ウインドウのサイズと位置 変数を設定 [ $新規ウインドウサイズ; 値:Let ( [
// スクリプト引数からレイアウト名とサイズ
vals = Substitute ( Get ( スクリプト引数 ) ; "," ; ¶);
$newName = Trim ( GetValue ( vals ; 1 ) ); $newW = Trim ( GetValue ( vals ; 2 ) );
$newH = Trim ( GetValue ( vals ; 3 ) );
// 新規ウインドウのサイズ
$newName = If ( IsEmpty ( $newName ); Get ( レイアウト名 ) ; $newName );
$newW = If ( IsEmpty ( $newW ); 500 ; $newW );
$newH = If ( IsEmpty ( $newH ); 200 ; $newH );
// 新規ウインドウの位置
$newTop = $top + ( ($h - $newH )/2 );
$newleft = $left + ( ($w - $newW )/2 )
]; "" ) ]
#新規ウインドウを開く 新規ウインドウ [ スタイル: ドキュメント; 使用するレイアウト: $newName; 高さ: $newH; 横幅: $newW; 上: $newTop; 左: $newLeft; 閉じる: はい; 最小化: はい; 最大化: はい; サイズ変更: はい; メニューバー: はい; 親ウインドウを淡色表示: いいえ; ツールバー: いいえ ]
単に中央に開くだけならもっと簡単なスクリプトで済みますが、「他ファイル」のウインドウを中央で開きたいときに、Get(ウインドウ〜) で計測できない事態を防止するため、全部計算済みにしてから新規ウインドウで位置とサイズを指定しています。
すいません、今回はこれだけのことで、サンプルファイルも一応置いておきます。ではご機嫌よう。
download: 新規ウインドウ中央に配置.fmp12.zip
(すいません、リンク間違ってました。訂正しました)