4Dウィジェットはコンポーネントとして提供される機能で、フォームエディタあるいは定義済みのオブジェクトライブラリからアクセスできます。これらのウィジェットは複合オブジェクトで、標準機能へのアクセスを提供する定義済みの特性を持っていて、とても簡単に実装できます。
3つのウィジェットが利用できます:
- SearchPicker: 標準のアピアランスを持った検索エリア
- DatePicker: 日付セレクタ
- TimePicker: 時間セレクタ
これらのウィジェットはプログラムなしで使用することができますし、またはプログラムで動作をカスタマイズすることもできます。フォームにウィジェットを配置し、デフォルトのプロパティをそのまま使用できます。動作をカスタマイズし、設定や制御を変更したい場合は、"コンポーネントメソッド"と呼ばれるメソッドを使用できます。コンポーネントメソッドはエクスプローラのメソッドページ内でコンポーネントごとにリスト表示されます:

このドキュメントではそれぞれのウィジェットごとにコンポーネントメソッドのシンタックスを説明します。
ウィジェットエリアをフォームに挿入するには二通りの方法があります:
- オブジェクトライブラリを使用する方法
- サブフォームを使用する方法
ウィジェットをオブジェクトライブラリを使用して挿入するには、以下の手順に従って下さい:
- デザインメニューからオブジェクトライブラリコマンドをを選択します。
オブジェクトライブラリウィンドウが開きます。 - カテゴリメニューの中のウィジェットを選択して下さい。
使用可能なウィジェットが全て表示されます:

- 使用したいウィジェットをドラッグ&ドロップでフォームに挿入して下さい。
その後プロパティやオブジェクトメソッドを通じて設定を変更する事ができます。
サブフォームタイプオブジェクトを使用してウィジェットを作成するには、以下の手順に従って下さい:
- フォームエディター内に、サブフォームオブジェクトを追加して下さい。
これについての詳細は4D Design Reference マニュアル内にあります。 - プロパティリスト内にて、"詳細フォーム"メニューをクリックして使用可能なフォームの一覧を表示します。ウィジェットはこのリスト内にあります。

- 挿入したいウィジェットを選択して下さい。
その後プロパティやオブジェクトメソッドを通じて設定を変更することができます。
ウィジェットは4D サブフォームに基づいており、そのためサブフォームの動作原理に従います。これらの初期化には特に注意する必要があります。
最適化の目的のため、ソブフォームオブジェクトは4Dによって、サブフォームが表示されたときにのみインスタンス化されます。これはつまりEXECUTE METHOD IN SUBFORM を使用してのメソッドの呼び出しや、サブフォーム内の動的なオブジェクトへのアクセスは、カレントページにおいてサブフォームが表示されるまでは不可能ということです。
ウィジェットをフォームの1ページ目以外に置いた場合、On Load フォームイベント内において初期化メソッド(TimePicker SET STEP など)を呼び出すことはできません。実行時にはウィジェットはまだインスタンス化されていないからです。
この場合を管理するために、ウィジェットエリアはロードされて使用準備が整ったことを示すための特定のイベント(値は-1)を返します。このイベントはウィジエット自身のオブジェクトメソッドレベルにおいて、On Data Change、On Load などと同じようにテストされなければなりません。そのため、ウィジェットがフォームの1ページ目以外に置かれている場合、以下のように書く必要があります:
If(FORM Event=-1)
TimePicker SET STEP("myTimePicker";? 00:10:00?)
End if
以下のように書いた場合は正しくありません:
If(FORM Event=On Load)
TimePicker SET STEP("myTimePicker";? 00:10:00?)
End if