【アローラルスタッフブログ】

評判、人気のおすすめ観光スポットはどこ?美味しい河内長野のグルメ情報を比較!アローラホームのご紹介も。

【FileMaker】レイアウト内のどのオブジェクトにフォーカスがあるか知りたい時は[GetLayoutObjectAttribute]を使おう!

こんにちは。
システム課の淺野です。

とんでもない進路の台風12号、皆様被害などありませんでしたでしょうか?
これから中国地方、四国、九州と襲うので心配です。
防災グッズだけでなく、災害に対する対策はきちんとしておきましょう。

さて、覚書きや誰かの役に立てば良いかなあと投稿している【FileMaker】の投稿が今回で11投稿になりました。
今まで投稿した中でたまにコピペされているのを見かけるとちょびっとは人の役に立っているんかなーと思っています。

そのFileMakerでソリューションをちまちまと作るだけではいけません。
いかに効率よく速く作っていくか。そして後々のメンテナンスの時に目的のものが見やすく、見つけやすくしないといけません。
入力画面には複数のオブジェクトがあり、そのオブジェクトのデーターを変更した結果で別のオブジェクトに影響を与えたい時があります。

ドロップダウンボックスで選んだ結果毎に編集ボックスに違う値を入れたりとか。
以前、投稿した
【FileMaker】FileMakerのチェックボックスセットが使えないのでチェックボックスもどきの作り方
これがチェックボックスもどきでボタンを用意してそれぞれスクリプトを作っておりました。

これが今となっては失敗です。複数のボタンは良いとしてもボタンそれぞれにスクリプトはいけません。
大変メンテナンスがしにくくスクリプトワークスペースの中でじゃまで使いづらいのです。
最終的には1000個近くスクリプトになるでしょう。これはいけません!
それで今回、たくさんあるドロップダウンボックスでそれぞれ違う編集ボックスに値を入れるのを作る時に別の方法を考えてみました。

【FileMaker】レイアウト内のどのオブジェクトにフォーカスがあるか知りたい時は[GetLayoutObjectAttribute]を使おう!

ドロップダウンリストから選ぶ値によって指定した編集ボックスに値を入れる

入力画面などにはドロップダウンリストを配置することが多々あります。
今、こんな入力画面を作っています。
【FileMaker】レイアウト内のどのオブジェクトにフォーカスがあるか知りたい時は[GetLayoutObjectAttribute]を使おう!それぞれの基準日に対して完了チェックのドロップダウンリストがあり、その左にはその日付が入力される編集ボックスが16個あります。

それぞれ、完了のドロップダウンリストで☑を選ぶと編集ボックスにその当日の日付を入れるようにします。
【FileMaker】レイアウト内のどのオブジェクトにフォーカスがあるか知りたい時は[GetLayoutObjectAttribute]を使おう!ドロップダウンリストは値一覧のカスタム値で""(ブランク)と"☑"が入っています。これはひとつの値一覧でどこからでも使えます。チックボックスもどきのように"0″と"1″でないから違和感ありますが、スクリプトをそれぞれ作らなくていいのです。

スクリプトトリガのイベントはOnObjectSaveを使う

このドロップダウンリストに名前を付けます。
インスペクタの位置の一番上に名前を入力します。

そしてスクリプトトリガとしてドロップダウンリストが保存された時に実行されるイベントを設定します。
イベントはOnObjectSaveです。OnOblectModifyは上手く動作しませんでした。

それからスクリプトを書きます。

GetLayoutObjectAttributeのhasFocus属性でオブジェクト名を取得

【FileMaker】レイアウト内のどのオブジェクトにフォーカスがあるか知りたい時は[GetLayoutObjectAttribute]を使おう!初めのIfで論理関数のGetLayoutObjectAttributeを使いました。
これは計算式で現在アクティブなオブジェクト名によって指定されたレイアウトオブジェクトの属性を返す関数です。
構文は
GetLayoutObjectAttribute ( オブジェクト名 ; 属性名 { ; 繰り返し回数 ; ポータル行番号 } )
で属性を色々入れることによって返ってくる値が代わってきます。
今回はhasFocusの属性を使いました。
これは

オブジェクト名にフォーカスがある場合は「1」、それ以外の場合は「0」を返します。フォーカスの対象となるオブジェクトは、フィールド、ポータル、タブパネル、スライドパネル、ボタン、ポップオーバーボタン、グラフ、およびグループです。ポータル行が選択されている場合も「1」を返します。

ということです。
注意しないといけないのは、オブジェクト名も属性名も"でくくらないと認識できません。

これでどのドロップダウンリストがアクティブ、セーブされたのかが判り、指定したオブジェクトに値を入れることが出来ます。
ドロップダウンリスト複数、スクリプトひとつで片付きます。
スクリプト内の大きなIf文はドロップダウンリストと同じ数はいりますけど・・・。

大量に作ったチェックボックスもどきも作り直さないと!

投稿者プロフィール

淺野
淺野
河内長野で勤めてついに11年目に突入。社内のITインフラ、社内システム(FileMaker)、各SNS、Webサイトアローラル三共住販株式会社と大阪府河内長野市の地域情報ポータルサイト河内長野おでかけ情報の面倒をみています。
 河内長野をPRすることで河内長野に住みたい!と思って頂いてアローラホームを建ててもらえたら本望です(^-^) 
たまにランチに行ってブログに投稿しているが評価が甘くなりがちかも。河内長野でランチは酒造通りの三佳屋のランチとか洋食のおとぎ屋のランチが好きです。