タイプ・アワードを簡単に

Deeplからの自動翻訳

ユーザーインターフェイスに興味のある方なら、On before keystrokeOn after keystroke イベントをすでに使っているかもしれませんね。4D v18 R5 では、これらのイベントのハンドリングが大幅に強化されましたので、きっとご満足いただけることでしょう。さらに、On before keystroke イベントが発生したときに、進行中の入力があるかどうかを判断する新しいコマンドも作成されました。それでは、詳細をご覧ください。

HDI:タイプ先行が簡単に

テキスト入力

テキスト入力の際、言語やOSに関係なく、システムが介入してくれる場合があります。例えば、フランス語やスペイン語でアクセントのある文字を入力する場合を考えてみましょう。”ê””ü””ñ”.macOSでこれらの文字を入力する場合、最も簡単な方法は、対応するキーを押し続けてダイアログボックスを表示させることです。

入力したい文字を選択するには、矢印キーを使用し、「return」または「enter」キーで選択内容を確認する必要があります。

blank

4D v18 R5では、このタイプのシステムダイアログ(別名IME)が検証されると、On before keystrokeOn after keystroke イベントが生成されるだけです。最後の文字だけが重要なのに、矢印キーや バリデーションキーに対応するコードを受信する必要はありません!

リストボックス

リストボックスも強化されました。セルが入力されていなくても、キーが入力されたときにリストボックスにフォーカスが当たると、すぐにOn before keystroke イベントが生成されます。これにより、どのキーが押されたかを知ることができ、新しい検索を開始したり、現在の選択範囲を変更したりといった判断をプログラムで行うことができるようになりました!

新しいコマンドでMoRE INFO

イベントが実際の入力中に発生したのか、それとも単にキーボードのキーが押された瞬間にリストボックスにフォーカスが当たったのかを知るには、どうすればよいのでしょうか。答えはとても簡単です。新しいコマンド、Is editing text 。このコマンドは、ユーザーが入力フォームオブジェクトに値を入力している場合はTrueを返し、それ以外の場合はFalseを返します。

サンプルコード

このサンプルでは、キーボードから A から Z までの文字が入力されると、すぐにクエリーを実行します(このサンプルでは、他の文字はすべて無視されます)。

もちろん、セルが変更されている間はクエリを実行することはできません。そのため、新しいクエリを実行する前に、新しいIs editing text コマンドを使用します。

var $char :Text
Case of
:(
FORM Event .code=On Before Keystroke)
If
Form.people:=
(Not(Is editing text))// check not in input mode
$char :=Keystrokeds .people.query("firstname = :1 or lastname = :1";$char+"@")
End if
End case

別の例?

次のアニメーションGIFは、このイベントを他のボタンや入力エリアなしで、リストボックスで使用できることを示しています(アニメーションGIFに表示される文字は、キーボードで入力されたキーを示すためにのみ表示されています)。

blank

このコマンドの詳細については、ドキュメントセンターを参照してください。

まとめ

この機能は、よりユーザーフレンドリーなインターフェイスの作成に役立ちます。開発者として、ユーザーエクスペリエンスをさらに向上させるために、この機能を使用することは間違いありません

より詳細な情報については、ドキュメントを参照してください。

Roland Lannuzel
- プロダクトオーナー&4Dエキスパート -電子工学を学んだ後、産業用ITの分野で開発者兼コンサルタントとして、さまざまなデータベースやテクノロジーを使って顧客のためのソリューションを構築。80年代後半に4Dに惚れ込み、会計、請求書作成、メールシステムなどのビジネスアプリケーションの作成に4Dを使用してきました。現在も、新機能やデータベース開発ツールの定義など、4Dの未来を積極的に切り開いています。