iPhoneで食事箋7
そういえばこのプログラム、まだメインフォームが無いんですよね。
メインフォームっていうのは、ログイン後一番初めに開くボタンだらけの画面です。
ちょうど一番初めにファイルを作成したときに、ファイル名と同名の自動作成されたレイアウトがありますので今回はそれを使いますが、別に作成しても問題ありません。
無駄に大きいのでiPhoneサイズに縮小し、ここにボタンを配置していきます。
上下のナビゲーションは邪魔なのですべて削除、アンカーは自動で中心に寄ってほしいので、すべて外しています。
よければログイン後に開くレイアウトをこれに変更しておきます。
メインフォームのボタンを見れば何をしたいかはわかると思いますので、まずは一番下のUSERボタンの指定はしておきましょう。
ついでに
こんなスクリプトを作成し、ユーザー一覧のホームに戻るボタンに指定しておきます。
これでユーザー画面とメインフォームが切り替えれるはずです。
ここで一つ、重要な設定をしておこうと思います。
これもどこかで書いたのですが、グローバルフィールドだけのテーブルを作成して1件レコードを作成したとき、どうやって追加しました?
きっとこれらのメニューバーだったり、ツールバーですよね。
これ、非常に邪魔です。
せっかくユーザー管理画面作って、ユーザーごとにレコードの追加とか削除を制限させようとしても、ここが触れてしまうと、だれでもデータの削除ができてしまいます。
FileMakerのアカウントの権限管理で細かく制御もできますが、あれはあれで大変なんです。
さらにそんなの表示するなよ?とかありますし、ただでさえ狭いiPhoneの画面を占有します。あんなもの使わせる方からすると表示しない方がいいのです。
表示させたいときはその都度表示させるようにし、基本的には表示しないこと前提で作成したいので、
こんな処理をプログラム起動時、またはログイン画面起動時に追加しておきます。
また、PCで使うことを想定すると色々めんどくさいので、ファイル起動時に
こんな一文をいれとくといいのですが、これだとPCで誰も開けなくなるので、
admin以外のアカウントでPCで開こうとすると、強制終了されるようになります。
前置き長かったですが、ここからは項目作るだけの単純作業が多くなります。
まずは患者データ画面から。
テーブルは
このようなものとなっています。
項目は自分の必要なものに合わせないといけませんが、問題は一番下。計算フィールドにして、フリガナ、氏名、患者番号のフィールドを「&」でつないでいます。
これは検索に使うフィールドになります。
では配置して・・・
あ、身長と体重なかった。あとで追加しておきます。
身長はよしとして、体重は変わるだろ?と思うかもしれませんが、それならそれでいいのです。
これらは実際の食事箋を入力するときのデフォルトの値として利用できるようにします。
次にボタンを配置していきます。
とりあえずこれだけ。
作り方によっては下の並びの方がいいかな。違いは一番左のボタンだけなんですが、これはメインフォームの患者データボタンを押したときに開くレイアウトによって使い分けています。
いや、何が違うのよ?でしょうけれども。スクリプト変えればいいだけなのでボタンのデザインなんてどっちでもいいといえばどっちでもいいのですが。
私の場合は、レイアウトの移動なのか、ウインドウを新たに作成したのかが後からわかりやすいように分けてたりします。
さて、まずどれからいこうかなということで、
これかなあ・・・。
実はこれとほぼ同じ作りになるんですよねえ。アイコン見れば何をするボタンかわかりますよね?
では色々仕組みを作っていきます。プログラミングだけではソフトは作れません。
まずテーブルを1つ作成、ここに1つ既定値を「0」にしてグローバルフィールドを作成、レコードを1件作成しておきます。
※今後このテーブルに作業用フィールドをまとめていきます。
レイアウトに戻り、編集ボタンと重ねて確定ボタンを作成します。
これらのボタンの「次の場合にオブジェクトを隠す」に
先程作成したグローバルフィールドの値によって、表示を切り替える式を組み込みます。
あとはそれぞれのボタンに、グローバルフィールドの1と0と切り替えるスクリプトを作成すれば、編集、確定ボタンの切替ができるようになります。
同様にして、患者ID以外全てのフィールドをもう一つ作成、今度は隠すだけではなく、
フィールド入力のブラウズ部分チェックを外すことで、閲覧時は入力不可、編集ボタンを押すと入力可能になるように切り替えます。
追加ボタンは
編集中のフラグを立てると同時に、新規レコードの作成コマンドを追加しておきます。
削除ボタンは
閉じるボタンは
細かな表示、非表示の切替を調整して
後残っているのは、編集のキャンセルボタンと、検索ボタンですねえ・・・。
両方面倒なところですが、まずは検索ボタンから。
とりあえずですがこんな感じで作成したスクリプトをボタンに指定してみます。
で、実際iPhoneでこのボタンを押してみますと・・・
このようになってしまいます。検索のキャンセルとかできない状態なんです。
なぜかと言いますと、そのようにしたから。メニューバーとツールバーを表示しないようにしましたよね。
でも検索の時は表示してくれないと困るんです。
ということで、
メニューバーと、ツールバーの再表示コマンドを追加してあげると、
検索モードに移行し、キャンセルもできます。
これでOKと思いきや、今度は何も検索するものも無いのでキャンセルすると、
メニューバーとツールバーが表示されたままになってしまいます。
検索モードの時は表示、ブラウズモードの時は非表示にしたいので、
こんなのを作成、これを
レイアウト設定の「OnModeExit」に指定することで、モードが切り替わるごとにモード状態を調べてツールバーとメニューバーの切替を自動でしてくれます。
ただツールバーが無いと、レーコードを移動することもできないので
ツールバーもどきのような物を作ってあげるといいのではないかと。図はフッターになっていますが、下部ナビゲーションに、上も上部ナビゲーションに配置しておくと、スクロールしてもボタンは隠れません。