カレンダーを再描画する

どのような時にカレンダーが再描画されますか?

イベントを編集する

カレンダー上のイベントをクリックすると、「イベント詳細」の小さいウインドウが開きます。レコードを編集してからこのウインドウの下部にある緑色のチェックマークのボタンをクリックすると、このウインドウを閉じてカレンダーが再描画されます。「ウインドウを閉じる」コマンドまたはウインドウの枠にある赤い「閉じる」ボタンからウインドウを閉じると、単にウインドウが閉じるだけでカレンダーは再描画されません。

どのようにしてこの動作を実現しているかというと、ウインドウを開いたときにレコードの修正状況が記録されています(「イベント詳細」ウインドウを同時に複数開いた際にも、記録されています)。そして緑色のボタンをクリックしてウインドウを閉じると、修正状況をチェックし、イベントが修正されていればカレンダーが再描画されます。

イベントを編集するプロセスに何らかの動作を追加したい場合は、「Close Window & Refresh Calendar」スクリプトの「Commit Record」のコメントの前に動作を追加します(このスクリプトの後半に変更を加えると、意図せず誤ったレコードに移動することがあります。「Dependency Chain」のスクリプトで別のレコードに移動することがあるのと同様です)。

「再描画」ボタン

カレンダーのヘッダにある、次の日/週/月へ移動する右向き矢印の隣に、「再描画」ボタンがあります。このボタンは、表示したい新規イベントがある場合に、サーバに対して手動で再描画をリクエストするために使用します。カレンダーは描画するイベントをキャッシュし、サーバに対して新規イベントを継続的にリクエストすることはありません。このカレンダーが従来のFileMakerのカレンダーよりもずっと高速で動作する理由のひとつが、この点です。

ただしこれは、自分が操作をしない限りは編集内容や新規イベントのレコードがカレンダーに表示されることはないということを意味します。通常は、このことは問題にはなりません。カレンダーはレコードの編集や表示の切り替えのたびにサーバから新規イベントをリクエストするからです。しかし画面を見ているだけであれば、「再描画」をクリックすればサーバから最新のデータを取得できます。

これはあまり“FileMakerらしく”ないように思えますが、きわめて複雑な画面は(そして従来のカレンダーのほとんどは)、自動で再描画をすることはありません。表示のために使用しているリレーションシップが“深すぎて”、サーバからの新規または編集されたレコードに関する通知に応答できないからです。

「Calendar」レイアウトを表示する際に再描画する

「Calendar」レイアウトには、このレイアウトを表示するたびにカレンダーを再描画するスクリプトトリガを割り当ててあります。

タイマーで再描画する

カレンダーを数秒ごとに再描画し、公共のスベースで大きな画面を掲示してスケジュールを調整したいといったこともあるでしょう。このブログ(英語)にいくつか例がありますので、再描画がどのように自動化されるかを学んでいただけます。