4D v16.3配列とフォームオブジェクト |
||
|
4D v16.3
配列とフォームオブジェクト
配列とフォームオブジェクト
配列は言語オブジェクトです。決して画面に表示されない配列を作成、使用できます。しかし、配列は同時にユーザインタフェースオブジェクトでもあります。配列では、以下のタイプのフォームオブジェクトがサポートされます。
(リ ストボックスを除く)これらのオブジェクトは、デザインモードのフォームエディタで、プロパティリストウィンドウのデフォルト値ボタンを用いて事前に内容 を定義できますが、配列コマンドを使用してプログラムで定義することもできます。いずれの場合も、フォームオブジェクトは開発者または4Dが作成した配列 によってサポートされます。 これらのオブジェクトを使用するとき、その配列で選択された要素を調べることにより、オブジェクト内のどの項目が選択されているかを検出できます。逆に、選択する要素を配列に設定して、オブジェクトの中の特定の項目を選択することもできます。 配列がフォームオブジェクトのサポートに使用される場合、この配列は、ランゲージオブジェクトとユーザインタフェースの2つの性質を併せ持ちます。例えば、フォームにスクロールエリアを作成します: 関連付けられた変数の名前(この例ではatNames)が、スクロールエリアの作成と処理に使用する配列名となります。 Notes: 次の例では、配列に値を格納し、それをドロップダウンリストに表示する方法を示します。配列arSalariesは、ARRAY REALコマンドを使用して作成します。これには、社内で社員に支払われる基準給与がすべて入っています。ユーザがドロップダウンリストから要素を選択すると、[Employees]Salaryフィールドに選択された値が代入されます。 ドロップダウンリストを作成し、それをarSalariesと名付けます。ドロップダウンリストの変数名は、配列の名前と同じでなければなりません。 オブジェクトのOn Loadイベントを使用し、配列arSalariesを初期化します。これを行うには、次に示すように、プロパティリストウインドウでこのイベントを有効にします: オブジェクトメソッドボタンをクリックして、次のようなメソッドを作成します: 以下のメソッドは: ARRAY REAL(arSalaries;10) 税引き前の年間給与 ($30,000から$84,000まで) に対応する、2500, 3000... 7000の数値配列を作成します。 以下のメソッドは: arSalaries:=Find in array(arSalaries;[Employees]Salary) 新規レコードの作成と既存レコードの修正の両方を処理します。
Note: 配列選択要素についての詳細は、次の節を参照してください。 arSalariesドロップダウンリストで選択された値を調べるには、オブジェクトのOn Clickedイベントを処理する必要があります。選択された要素の要素番号は、配列arSalaries自体の値です。したがって、式arSalaries{arSalaries}はドロップダウンリストで選択した値を返します。 arSalaries ドロップダウンリストの完全なメソッドは、以下のようになります: Case of このドロップダウンリストは次のように表示されます。: 次の節では、配列をフォームオブジェクトとして使用する際の一般的な基本操作を説明します。 配列の現在のサイズは、Size of arrayコマンドを使用して取得できます。前述の例の場合、次のコードは5を表示します: ALERT("atNames配列のサイズは: "+String(Size of array(atNames))) 単一レベルの並び替えにはSORT ARRAYコマンドを、マルチレベルの並び替えにはMULTI SORT ARRAYコマンドを使用できます。配列がスクロールエリアに表示されているとします: a. まずエリアは下図の左のリストのように表示されています。 b. 以下のコードを実行すると: SORT ARRAY(atNames;>) エリアは下図の中央のように表示されます。 c. 以下のコードを実行すると: SORT ARRAY(atNames;<) エリアは下図の右のように表示されます。 APPEND TO ARRAY, INSERT ELEMENTおよびDELETE ELEMENTコマンドを使用して、要素の追加、挿入、削除ができます。 前述の例で、配列がスクロールエリアに表示されているとき、このエリアでのクリックは、以下のように処理できます: ` atNames エリアオブジェクトメソッド Note: 各イベントは、オブジェクトのプロパティでアクティブにしなければなりません。 シンタックスatNames{$vlElem}を使用して配列の特定の要素を処理でき、atNamesは配列中で選択されている要素の要素番号を返します。したがって、シンタックスatNames{atNames}は配列atNames内で選択されている要素の値を意味します。要素が選択されていない場合、atNamesはゼロになるため、If (atNames#0)という判定式は、要素が実際に選択されているかどうかを検出するために使用できます。 同様に、配列に値を割り当てることにより、プログラムから要素を選択できます。 ` 一番目の要素を選択 (配列が空でなければ) Find in arrayコマンドは、配列内の特定の値を検索します。前述の例を使用すると、次のコードは、リクエストダイアログボックスに“Richard”と入力した場合に、その値が“Richard”である要素を選択します: $vsName:=Request("名前を入力:") ポップアップメニュー、ドロップダウンリスト、スクロールエリア、タブコントロールは、通常同じ方法で扱うことができます。要素の値を変更したり、要素を追加や削除したりした場合でも、画面の再描画をするためにコードを追加する必要はありません。 Note: アイコン付きのタブコントロールを作成、使用したり、タブの有効と無効を切り替えるためには、タブコントロールをサポートするオブジェクトとして階層リストを使用しなければなりません。詳細はNew list コマンドの例題を参照してください。 ポップアップメニュー、ドロップダウンリスト、スクロールエリア、タブコントロールは前節で説明したアルゴリズムによって制御できますが、コンボボックスの扱いはこれらと異なります。 コンボボックスは実際、値のリスト(配列の要素)が添付されたテキスト入力可能なエリアです。ユーザはこのリストから値を選択し、さらにテキストを編集できます。したがって、コンボボックスでは、選択した要素という概念は適用されません。 コンボボックスには、選択された要素というものはありません。ユーザがエリアに添付された値のいずれかを選択するたびに、その値が配列の要素ゼロに入ります。そしてユーザがテキストを編集すると、ユーザが変更した値が要素ゼロに入ります。 ` asColors コンボボックスオブジェクトメソッド
参照
|
プロパティ
プロダクト: 4D
履歴
ARTICLE USAGE
ランゲージリファレンス ( 4D v16) |