4D プログラミングでは、コレクションを使用することが多くなっています。4D v19からは、Form機能を含め、いくつかのインターフェースオブジェクトのコンテンツを定義するために、これらを使用することができます。これは、一般的なインターフェイスの管理に非常に便利です。
また、リストの使用方法にも改良を加えました。詳しく見ていきましょう!
リストの使用方法の改善
リストの使い方が改善されました。
– 階層的なリスト
– タブコントロール(最初の使用例)
以下のオブジェクトで、コレクションを参照として使用できるようになりました。
– ドロップダウン・リスト(ポップアップ・リストとも呼ばれる)
– コンボボックス
– タブコントロール(2つ目の使用例)
階層型リストとタブコントロール
タブコントロールと階層型リストフォームオブジェクトの リスト参照の使い方を改善しました。これまでもリスト参照をフォーム・オブジェクトに直接関連付けることは可能でしたが、この参照はオブジェクト属性から取得できるようになりました。つまり、次のように書くことができるようになったのです。
// create a new object
$o:=New object
// このオブジェクトにリストを追加する
$o .
listRef:=New list
// then add items, icons, etc. to this list
// (…)
// そして、このオブジェクトを使ってダイアログを呼び出す (リスト参照を含む)
DIALOG ("myForm";$o)
// メモリリークを避けるためにリストを消去
する
CLEAR LIST (
$o.listRef)
完了!
ドロップダウンリスト(ポップアップ)、コンボボックス、タブコントロール(再び!)。
主な進化は、コレクションに関するものです。以下のフォームオブジェクトの値は、スカラー値(通常は英数字)のコレクション、より正確には、コレクション自体を含むオブジェクトをベースにすることが可能です。なぜか?なぜなら、一般的に、ユーザーが選択した値を知ること、および/または、デフォルト値(最初のタブ、ドロップダウンの3番目の項目、など)を選択することが必要だからです。
したがって、オブジェクト変数には、次の3つの属性が含まれることになります。
–values: 取り得る値のコレクション
–index: 選択された要素のインデックス (ドロップダウンとタブの場合)
–currentValue: 現在の値 (コンボボックスで、ユーザーが値を選択または入力できる場合に使用されます)
例
下のようなダイアログを呼び出したいと想像してください。しかし、ダイアログを呼び出す前に、定義したいことがあります。
- タブコントロールの内容を “Alpha”; “Bravo”; “Charlie” とする。
- タイトル(入力できるようにする)
- ステータス” の選択可能な項目
これらのフォームオブジェクトは、それぞれ同じタイプの関連変数または式を持ちます。オブジェクト
// prepare a global object that will be sent to the dialog command
$o// prepare the Title object$o:=New object
// prepare the tab control object
$o .oTab:=New object
$o .oTab.values:=New collection("Alpha"; "Bravo"; "Charlie")
$o .oTab.index:=0 // "Alpha" タブを選択
$o oCombo :=New object
oCombo.values :=New collection("Mr"; "Mz"; "Dr")
$o .oCombo.currentValue:="
// prepare the Status object
// tip : index = -1, currentValue is used as a placeholder !
$o .oPop
:=New object
$o .oPop.values:=New collection("Single"; "Married"; "Widdow"; "Divorced")
$o .oPop.currentValue:="Select status..."
$o .oPop.index:=-1$win:=Open form window("BLOG")
DIALOG ("BLOG";$o)
このメソッドを実行し、ダイアログを埋めてください。
ダイアログが検証される(OKがクリックされる)と、どのタイトルとステータスが選択または入力されたかを知ることができるようになります。
以下は、結果として返されるオブジェクトのJSON値です。
まとめ
1つのオブジェクトを使用して、表示値と選択値を即座に定義するのは素晴らしいことです。一度に多くのオブジェクトでコレクションを使用することができ、プロセスやプロセス間配列を使用することを避けることができます。もちろん、主な目的も達成されています。これにより、ジェネリック・プログラミングがこれまで以上に簡単になります。
いつものように、HDIがこの機能を説明しますし、ドキュメントも更新されました。
楽しんでコーディングしてください。