ユーザーフォームは、その名の通り、ユーザーにとって使いやすいことが全てです。しかし、サブフォームとそのコンテンツの間でスクロールの主導権が争われるようなことになったらどうなるでしょうか?つまり、サブフォーム内のリストボックスをスクロールしようとすると、サブフォーム全体が動いてしまう。あるいは、サブフォームのリストボックスをスクロールしようとすると、サブフォーム全体が動いてしまう!そのようなことを経験したことは一度はあるのではないでしょうか。
これは4D 20 R6で改善され、より自然な動作になりました。
スクロールされるべきはどちらか?サブフォームか、その中身か?
最初は(または「一昔前は」とでも言いましょうか)、スクロールホイールやトラックパッドを使っても、サブフォーム自体をスクロールさせるだけで、サブフォーム内に含まれるフォームオブジェクトをスクロールさせることはできませんでした。しかしその後この振る舞いは逆転しました!サブフォームに含まれるオブジェクトはスクロールするも、サブフォーム自体がスクロールしない場合がありました。もちろん、スクロールバーを使えば話は別ですが、スクロールバーは非表示にされていることが一般的でした。要するに、ユーザーにとってはサブフォームのスクロールというのは必ずしも直感的で簡単とはいえなかったのです。
百聞は一見にしかず
マウスホイール(またはトラックパッド)を使ったときの新しい振る舞いを、こちらのGIFでご覧ください!
両方のいいとこ取りを
これからは、サブフォームにスクロール可能なオブジェクトが含まれている場合、スクロールホイールやトラックパッドが動き出したときには、これらのオブジェクトにマウスカーソルが置かれていれば、そのフォームオブジェクトが先にスクロールします。オブジェクトの内容によって、スクロール可能なものとそうでないものがあります。空のリスト、小さな画像、中身が完全に表示されているリストボックスなどは、決してスクロールしません。
この結果、どんな場合においても自然な振る舞いが実現します。サブフォーマット内のフォームオブジェクトがスクロールできる場合は、それがスクロールできます!そうでない場合(空であるか、すでに完全にスクロールしきっている場合)、”親 “サブフォームがスクロールします。そして、サブフォーム内でスクロール可能な新しいオブジェクトに遭遇すると、再びフォームオブジェクトがスクロールします。これが、サブフォームの一番下まで続きます。
もちろん、これは上から下へ、下から上へ、左から右へ、右から左へ、すべての方向で動作します。
結論
この一見小さな変更は、ユーザーエクスペリエンスに大きな違いをもたらします。ユーザーは自信を持ってフォームをナビゲートすることができ、どこにカーソルを置くかによって何がスクロールするかを正確に把握することができます。これにより、開発者は、よりユーザーフレンドリーで直感的なインターフェイスを設計することができます。