iPhoneで食事箋3
実のところ、ユーザー管理画面は初心者向きではないと思います。今更ですけど。普通は食事箋なら食事箋の入力画面から作りそうですよね。
ただですね、AccessにしろFileMakerにしろ他のデータベースにしろ、まずここが作れないと他の人に使ってもらうソフトはできあがらないのです。ソフトができあがってくると、なぜここから始めないといけないかがよく分かります。
さらに今更ですが、この画面はデータを入力する画面ではありません。
?何言ってるの?
かもしれませんが、そういうものなのです。
何故か?
まあこれも追々わかります。
ということで、入力、編集ができないようにしておきます。
※直接入力、編集できるようにしてもかまいませんが、誤操作のことも考えここでは閲覧用の画面だと思ってください。
赤丸で囲んだところのチェックを外します。
これで編集できなくなります。
次に勝手に削除してもらっては困ります。他の人のアカウントを誰でも消せると困りますよね。
ユーザーデータを削除できるのは、Powerユーザー権限を持った人だけにしたい。
そこで一般ユーザーがログインした時にはゴミ箱ボタンを表示させないようにしてしまいます。
インスペクタの「次の場合にオブジェクトを隠す」部分に
このように入力します。
前ページで作成した、一般ユーザーアカウントであれば表示しないという設定です。
「admin」または「Power」だと表示されます。
同様に、UserIDとPasswordも表示させたくないところですが、両方隠すとユーザーが自身でパスワードを変更したい場合にどれが自分のアカウントか分からなくなります。
まあ、ログインユーザーのデータしか表示されないように作ればいいのですが。
今回は、Password、権限、ついでに権限のお題目部分を隠すようにしておきます。
このままだと、一般ユーザーがログインした時パスワード部分が何も表示されないため、ちょっとかっこわるいです。そういった場合、まるで何かが入力されているみたいに
「****」
のようなテキストを仮に表示させておくと、なんとなくいい感じになります。
分かりやすい様に場所をずらしていますが、これを「Password」部分に重ねてあげます。
「次の場合に・・・」部分を、先程と逆にするのを忘れずに。
さて、ログインしたユーザーによって表示、非表示を切り替える仕組みはできあがりましたので、続けてユーザーの登録画面を作っていきましょう。
こんなやつ。
これを作るには、まずテーブルです。
新たに1つテーブルを作成、そこにテキスト型のフィールドを2つ作成し、オプションからグローバル格納のところにチェックを入れます。
このグローバル格納っていうのが、Accessから始めた私にはちょっと使い方がよく分からなかったのですが、慣れるとかなり便利な機能です。簡単に言うとメモ帳みたいなものと言えばいいのかな?今だけメモしておいて、用が済んだら消したり、そのまま残しておくこともできます。まあ使っていたら分かります。
できたらレイアウトを作成していきます。
自動で作成されたレイアウトは今回も紛らわしいので先に削除しておきましょう。
今回はフォームを選択します。
閉じるボタンとフィールドを配置、追加ボタンも作ります。
左にアンカーが付いていますが、これを外しておきます。
これで画面が大きくなっても入力部分が画面の中心に移動してくれます。
また画面が全体的に上に詰まってますが(赤枠で囲っている部分は空白)、これは入力時にスクリーンキーボードが表示されても、追加ボタンが隠れないようにするためで、こんなちょっとしたことが使いやすくなると、動画サイトでプロの方が言ってました。
これで必要最小限の画面ができあがりました。
ここから実際プログラムを作っていきます。
画面をブラウズに切り替えてどんなもんか確認してみましょう。
変更は当然「保存」です。
ではまず1件レコードを追加します。
ツールバーからでも、メニューバーからでも、どちらからでもかまいませんが、このテーブルに追加するのはこの1件のレコードのみです。
少しわかりにくいですが、グローバルフィールドだけのテーブルに1件だけ空白のデータをとりあえず作成しておくと言うことです。
画面の確認もできたので先に進みます。
閉じるボタンは閉じるだけなのでそれを指定しておきます。
レイアウトに戻りまして、閉じるボタンをダブルクリック
単一ステップを選択
できあがり。
まあ初めてはこんなもんです。
問題は次。追加ボタンです。これはそう単純ではありません。
ここで初めてプログラムを作っていきます。
スクリプトワークスペースを開いて
新規ボタンを押します。
スクリプトにも名前を付けないといけません。左のチェックは全て外しておきます。
何か変更があった場合は*印が付きます。
ではまずエラー処理
文字入力したら、自動で関連する処理が候補として出て来ます。さらに日本語対応。
FileMakerが覚えることが少なくて済むというのはこれですね。プログラムに関してはとても作りやすいと思います。
次にすすみまして、ユーザによる強制終了を許可を「オフ」にしておきます。
これはプログラムの途中、処理によって継続とか中止とか、メッセージがでてくる場合がありまして、それをさせないコマンドです。
続けて今度はIf文です。
「もし○○なら××しなさい」
というお決まりのやつです。
Ifを選択した時点で、自動的にEnd Ifまで入力してくれます。ここに
Get ( ウインドウモード ) ≠ 0
と入力します。
これ、何かと言いますと、ブラウズモードでなければという意味で、つまりそれ以外の、検索モードだったりプレビューモードだったり、印刷中だったらという意味です。普通に考えると検索モードだったらということでしょうか。
検索モードだったら処理をさせたくないので、
このように入力してみました。
この5行に関しては決まり文句みたいな物だと。
私の場合は新しくスクリプトを作成するときには、ほぼ毎回貼り付けています。
ここからが実際の処理になります。
まずユーザーIDが空白でないか調べる処理を書きます。
空白なら処理を中止したいので
再度If文を選択、赤丸で囲った所を押すと
さらに色々選ぶだけでプログラムが作れてしまう画面が出て来ます。
ここに、「ユーザーIDが空白だったら」という処理を書きたいので
さすがに空白がIsEmptyとかは調べないといけませんが、Isだけ入力すると後は選択肢が出て来ます。
右のコマンド一覧から探すこともできますが、1つずつ見ていくよりはさすがにネット検索の方が早いかと。
フィールド部分の色変わってます。ここを選んだ状態で、ちょうど左側になにかフィールドらしき物が表示されていますのでこれを選択してみましょう。
ダブルクリックしてあげると
目的の部分に、「正しい書き方」で入力されます。
この正しい書き方というのがくせ者で、ソフトによって違いますしね。
できたらOKボタンを押して
このままだと、なんで先に進まないのか分からない・・・ことはないと思いますが、メッセージも表示させたいので
Enterキー押して行を追加、カスタムダイアログを表示を選択、赤丸のボタンを押して
上のように入力してみました。
ボタン2のところに「キャンセル」と入力されていたら、今回は消しておきます。
全く同じ事をPasswordでもしたいので、コピペから少し修正して
これでユーザーID、またはPasswordが空白だと処理が進まない仕組みができあがりました。