電卓の計算
今年最初のブログは、
ボタンを利用して数字を入力するための仕組みについてです。
FileMaker Go の「数字10キー」のEnterキーの動き
お客様に教えていただいたことなのですが、
FileMaker Go 17 と、FileMaker Go 18で、
「数字10キー」のEnterキーを押した時の動きが少し変わったようです。
17の時は、Enterキーを押して次のフィールドへ移動する際、
「数字10キー」は隠れず、カーソルが次のフィールドに移動するだけなので、
続けて「数字10キー」で入力することができました。
18にすると、Enterキーを押して次のフィールドへ移動する際、
「数字10キー」が一旦隠れ、カーソルが次のフィールドに移動すると新たに「数字10キー」が表示されるため、
ほんの少しではありますが、「数字10キー」が表示されるのを待つ必要があります。
このことを教えてくださったお客様の場合、「数字10キー」での入力を、
「入力し終わった時間も結果として早い方がよい」という場面で使っていたため、
利用者の方からの報告で気づいたとのことでした。
お客様と一緒に17と18で確かめてみるとご指摘通り、動きが違っていました。
ほんの少しの時間とはいえ、時間を競う画面にはあまりうれしいことではありません。
また、いちいち「隠れて表示」の動きがあると、画面のちらつきが気になります。
なんとかせねばということで、iPadの「数字10キー」の利用をあきらめ、
ボタンで10キーボードを作っていただくことになりました。
微妙な違いで、使ってみないとわからないことでした。
教えていただき、ありがとうございました。
電卓を作ってみました
FileMaker Go の「数字10キー」の動きの確認をするために作ったファイルを見ていたら、
電卓が作れそうな気がしたので、軽い気持ちで作り始めてしまいました。
「軽い気持ち」
これがよくない。やるなら真剣にやるべきでした。
うっかりやりはじめてみたものの、
思ったより難しい。。。
結果を出すだけでなく、計算の履歴を残し、
計算の履歴を確認したり直したりできるようにしようとしたのも間違いでした。
最初に引っかかったのはこの考え方。
数字と記号を押し続け、値を変数(またはグローバルフィールド)にためておき、
その値を「=」ボタンを押した時にEvaluate関数を使って計算させるようにすればいいだろう。
100+10/2=「結果」
「100+10/2」の計算をEvaluate関数を使って結果を出すとどうなると思いますか?
これは「105」という結果が返ってきます。
では、電卓で「100+10/2」の計算をしてみてください。
結果はどうでしょう?
「55」になるんです。
何気なく使っていたので気づいていなかったのですが、
電卓は毎回結果を返すだけのものだったのです。
(MRキーなどを使って目的の計算をすることはできるのでしょうが)
「+」「ー」「÷」「×」の記号を使う計算については、
イコール記号のボタンを押すまでの計算式をまとめて評価するのではなく、
記号を押すごとに、結果の値に対して次の計算結果を出していくのです。
うっかりしていました。
これに気づいて電卓を見直してみると、MRキーがあるわ、%キーはあるわと、
思った以上に大変であることに気づき、軽い気持ちは吹っ飛びました。
とりあえず、
「+」「ー」「÷」「×」での計算ができるものを作ろうということで作ることにしました。
(それでも大変だったんですが・・・)
年明け最初のブログが「なんとなく負けた感じ」で申し訳ないのですが、
今回は時間もないのでここまででお許しください<(_ _)>
今年もあまり頻度は高くないとは思いますが、
技術的な敷居も高くないネタ(しか持ってない^^;)を掲載させていただきたいと思っております。
今年もみなさま、よろしくお願いします!