FileMaker公式テキスト中級編!!!
中級編では、
中級開発者として複数の利用者を想定してシンプルなカスタムAppを作成する
といった内容になります。
全16章です。
前回は、15章『セキュリティ』について学びました。
👉FileMaker 中級編(15章)
今回は、16章『カスタム App の最適化』についての知識を学びます。
<カスタム App の最適化>
ユーザについて
カスタム App に必要な機能は、使う人の役割に応じて変わることがあります。
ステータスツールバーの表示/非表示
運用開始後はステータスツールバーを非表示にし、レイアウト上のボタンを使ってもらうことで、意図した操作のみをユーザーに行わせることができます。
スクリプトを使って、ユーザーの権限によって表示をコントロールします。
制御の内容としては。。。
・ユーザーの権限によって表示をコントロール
・開発者は表示可能にしておく
・起動時にツールバーを制御するスクリプトトリガ
→OnFirstWindowOpen
機能に関してはレイアウト上のボタンで実装していく。
例 レコード数を表示する円グラフの代用
マージ変数を利用して表示可能
→OnRecordLord
カスタムメニュー
標準メニューをカスタマイズできます!!!
※高度なツールが「オン」の場合に、カスタムメニューの作成が可能です。
ステータスツールバーと同じように、どのようなメニューをユーザが実行しても良いかを考えます。
●カスタムメニューの設定に必要なもの
・高度なツールが「オン」の、FileMaker Pro
・[完全アクセス]アクセス権セット
メニューを全非表示にしてしまうと。。。
ショートカットのコピペなどができなくなってしまいます。。。
・ファイルごとにカスタムメニューを設定する。
・レイアウトごとにカスタムメニューを設定する。
上記の設定ができます。
●カスタムメニューの作成
1、[ファイル]-[管理]-[カスタムメニュー…]を選択します。
2、 [カスタムメニューの管理]ダイアログが表示されます。
カスタムメニュー」タブをクリック
3、[作成…]をクリックします。
4、[カスタムメニューの作成]ダイアログが表示されます。
[FileMaker の標準メニューから作成する]が「オン」のまま
「FileMaker Pro」をクリックして[OK]
5、[カスタムメニューの編集]ダイアログが表示されます。
カスタムメニュー名が「FileMaker Pro コピー」になっています。
つまり標準のメニューがコピーされたものです。
6、カスタムメニュー名は変更せず[OK]をクリックしてダイアログを閉じます。
そのまま他の FileMaker の標準メニューをカスタムメニューに作成します。
カスタムメニューが作成されました!!
7、次にカスタムメニューセットを作成します。
8、[カスタムメニューの管理]ダイアログで「カスタムメニューセット」タブをクリックします。
9、[作成…]をクリックします。
10、[カスタムメニューセットの編集]ダイアログが表示されます。
11、 [メニューセット名]を「ユーザ用メニュー(演習)」とします。
12、[追加…]をクリックします。
13、[メニューの選択]ダイアログが表示されます。
14、先ほど作成したカスタムメニューを選択[OK]
↓↓↓
「ユーザ用メニュー(演習)」メニューセットが出来上がりました。
●カスタムメニューを設定して表示を変える
1、[ツール]-[カスタムメニュー]を選択すると、現在は[FileMakerの標準メニュー] です。
2、[ユーザ用メニュー(演習)]を選択します。
メニューが切り替わります!!!
カスタムメニューもファイルごとの設定にまります。
マルチファイルでのカスタムAppでは、それぞれのファイルで設定してください!
メニューとメニュー項目
●メニューの順番
カスタムメニューを選択した順番でメニューが表示されます。
使用しやすい順番を意識して設定してください。
● 表示順を動かせないメニュー
「FileMaker Pro コピー」と「ヘルプコピー」には、左に錠マークがついています。
この 2 つのメニューは順番を変えることはできません。
●メニューの中身
カスタムメニューの項目をダブルクリックすると、メニュー 内容を確認できます。
[メニュータイトル:]
実際にユーザに表示されるものです。これを変更できます。
計算式も利用できます。 $$ からはじまるグローバル変数で動的な変更も可能です。
[インストールの条件:]
インストールの条件を計算式で設定できます。
例 If( Abs ( Get ( システムプラットフォーム ) ) <> 2 ; 1 ; 0 )
※システムプラットフォームが絶対値で2以外の場合、「1(真 = True)」となって、 メニューがインストール(表示)されるという条件分岐です。
↓↓↓
つまり、計算式でクライアントハードウェアの OS のプラットフォームごとにメニュー をインストールして表示をコントロールできるということです。
メニューの下の階級であるメニュー項目についても細かな設定ができるようになっています。
[既存のコマンドを使用]
でコマンドを変更すると、標準のコマンドが適用されるすべての場所(ス テータスツールバーや右クリックのショートカットメニュー、スクリプトステップなど)にもそれが反映されます。
様々なところに反映されたり、FileMaker Goでは違う挙動になったりと、注意すべき点が多々あるので、細かく設定を変えるときは注意が必要です!
カスタムメニューを他のファイルにコピー
カスタムメニューは、他のファイルにコピーすることができます。
(1)カスタムメニューを、コピー元ファイルから、貼り付け(ペースト)する。
(2)カスタムメニューセットを、コピー元ファイルから、貼り付け(ペースト)する。
↓↓↓
つまり、メニューセットで参照されているメニューはコピーされません。メニューセットが参照しているメニューを先に貼り付けします。
アカウントの管理
アカウントを管理する作業は[セキュリティの管理]ダイアログを使用します。
基本的な設定完了後、アカウント管理用のスクリプトを作成して
運用時に利用することが望ましいです。
間違ってアクセス権セットを削除してしまうなどのミスが起きないようにするためです。
スクリプトで制御可能なこと
・アカウントの登録
・アカウントの削除
・アカウントの有効化/無効化
・パスワードの変更
アカウントの個別処理
1つのアカウントについてアカウントを追加する。
(ファイル-[管理]-[セキュリティ]からではなくスクリプトでの実行を考えてみます)
●アカウントの登録
変数を設定 [ $アカウント名 ; “” ]
※変数を空に設定
Loop
Exit Loop If [ ( Get(最終メッセージ選択) = 1 and not
IsEmpty ( $アカウント名 )) ]
※「最終メッセージ」が1を選択され かつ 「$アカウント名」が空でない場合Loopを抜ける
カスタムダイアログを表示 [ “アカウント登録”; “アカウント登録をおこないますか?「はい」の場合はアカウント名を入力してください。” ; $ アカウント名 ]
※カスタムダイアログ「アカウント登録をおこないますか?「はい」の場合はアカウント名を入力してください。」
[入力フィールド]の設定で変数$ アカウント名 に入力してもらう。
If [ Get(最終メッセージ選択)=2 ]
現在のスクリプト終了 [ ]
End If
※「いいえ」(2)が押された時スクリプトを終了する。
End Loop
エラー処理 [ オン ]
アカウントを追加 [ $アカウント名; パスワード: 1111 ]
※オプション設定
[アカウント名:]$アカウント名
[パスワード:]1111
[アクセス権セット:]営業ユーザー
If [ Get(最終エラー ) ]
カスタムダイアログを表示 [ “エラー ” ; “アカウントの登録でエラーが発生しました。”]
Else
カスタムダイアログを表示 [ “作業完了” ; “アカウントの登録が完了しました。” ]
End If
エラー処理 [ オフ ]
●アカウントの停止
「アカウント停止」スクリプトも、登録のスクリプトの内容と似たものです。
[アカウントを追加] スクリプトステップの代わりに、次のものを使っています。
『[アカウントの有効化]スクリプトステップ 』
●[完全アクセス]アクセス権セットで実行する
1、スクリプトパネルでスクリプトを右クリック。
2、[完全アクセス権を付与]
付与されると、スクリプトパネルでスクリプト名の右に人マークが表示されます。
アカウントの一括処理
マルチファイルのアカウント一括処理を考えてみます。
2つのファイルのアカウントを共通で作成してみます。
全員のアカウントを管理しているAテーブルがあるとします。
※アカウントの編集スクリプトステップはないため、更新するためには、一度削除して再登録する必要がある。
処理の流れ
1、マスタテーブル(A)のレコードを利用
2、Aテーブルを外部データソースに追加
3、アカウントを全て削除
4、アカウントを全て再登録
実際の設定は割愛します。こういったこともできます!
難しいので省略します〜🥺
レコード削除の注意
カスタム App ではレコードの削除について注意点があります。
リレーションシップの削除設定
[リレーションシップ編集]ダイアログ
[他のテーブルでレコードが削除された時、このテーブルの関連レコードの削除を許可]
が注意すべき設定です!!!!
テーブルのレコードが削除されたとき、その参照先のテーブルの関連レコードが削除されます。
この削除ルールは設定した TO が指定されているレイアウトだけではなく
他のレイアウト(同じ実体テーブルを元にした TO が指定されているもの)でも同様の削除となる点です。
もし利用するなら次のことを注意する必要があります
・TO名には「連鎖削除」を表す記述をする
・他のレイアウトで使われていないか確認する。
レコードの削除に関しては、上記のように一括で削除せずに、スクリプトを使ってそれぞれの関連レコードに移動させてから行う方法もあります。
十分に考えてから最適な方法を選びましょう。
排他
カスタム Appでは、同じレコードを複数人で編集できません。
「排他制御」により、一度に 2 人以上のユーザが同一のレコードを編集することができないように「ロック」されています!
ということは。。。
レコード全体を処理するインポートや前置換を行う場合は、他の人が使わない時間に行わなければなりません。
レコードを必然的にロックさせる方法もあります。
『レコード/検索条件を開く 』
『レコード/検索条件確定』
↑処理後は必ず、ロックを解除するスクリプトステップを使用しましょう。
起動と終了の処理
最後にカスタム App の「起動」と「終了」について考えます。
起動:作業開始準備
ユーザがカスタム App で作業を開始できるように、準備をするのが「起動処理」です。
処理内容
・『OnFirstWindowOpen 』トリガを使用
・ホームレイアウトの制御
・ツール/メニューバーの制御
・グローバル格納値クリア/初期化
運用の注意事項
・アカウントやデバイスに応じた起動
・セキュリティ権限に応じた起動
・グローバル格納値の初期化
終了
ユーザがカスタム App で作業を終了するときは、ウインドウを閉じてファイルが終了できれば良いはずです。
処理内容
・『OnLastWindowOpen 』トリガを使用
・レコードの表示
・グローバル格納値のクリア
・ウインドウ制御
運用の注意事項
・ローカルで最後に閉じた状態が保持される
・ホストでの初期状態はローカルの最後の状態
・IsEmpty ( Get ( ホストIPアドレス )が真ならば、ファイルはホストされていない
●ローカル環境でファイルを閉じた場合
※ローカル環境では、ウインドウの位置や 表示していたレイアウト、対象レコード、グローバル格納の値を覚えています 。元の状態に戻しておくべきです。
全レイアウトで全レコードを表示する
対象レコードを覚えたままにしないために行います。
グローバル格納値のクリア
グローバル格納フィールドのデータをクリアします。
ウインドウの位置を整える
ウインドウの位置も覚えたままにせず揃えるためです。
ローカル環境で開いているか見分ける
次の計算式で条件分岐しています。Get ( ホスト IP アドレス ) は、ファイルがホストされていない場合は、「空欄」を返します。それを IsEmpty 関数で確認しています。
『IsEmpty ( Get ( ホストIPアドレス )』
『OnLastWindowOpen 』トリガに設定する。
「終了処理」スクリプト
If [ IsEmpty ( Get ( ホストIPアドレス ) ) ]
スクリプト実行 [「全レイアウトで全レコード」]
レイアウト切り替え [「起動画面」(z_ユーティリティ) ]
レコード/検索条件確定 [ 入力値の制限を無視; ダイアログなし ]
ウインドウの調整 [ 収まるようにサイズ変更 ]
スクリプト実行 [「グローバル格納値クリア」]
ウインドウの移動/サイズ変更 [ 現在のウインドウ; 上: 5; 左: 5 ]
End If
さて!
中級編全章終りましたよ〜🌸
中級編お疲れ様でした。まだまだ理解度も低いですが😅
今後は、実践を通し何度もテキストを読み返すことで理解力を高めていきたいと思います😆
FileMaker頑張っていきましょ〜🌷🌷🌷
コメント