arSalaries:=Find in array(arSalaries;[Employees]Salary) If(arSalaries=-1) arSalaries:=0 End if
新規レコードの作成と既存レコードの修正の両方を処理します。
新規レコードを作成する場合、[Employees]Salaryフィールドの初期値はゼロです。この場合、Find in array関数は配列の中で値を検索できず、-1を返します。If (arSalaries=-1) という判定式により、arSalariesをゼロに設定して、ドロップダウンリストで要素がまったく選択されていないことを示します。
既存レコードを修正する場合、Find in array関数により配列内の値の位置が取得され、ドロップダウンリスト要素を、フィールドの現在の値に対応するよう選択します。特定の従業員の値がリストにない場合、If (arSalaries=-1) という判定式により、リストの任意の要素の選択が解除されます。
Case of
:(Form event=On Load) ARRAY REAL(arSalaries;10) For($vlElem;1;10) arSalaries{$vlElem}:=2000+($vlElem*500) End for arSalaries:=Find in array(arSalaries;[Employees]Salary) If(arSalaries=-1) arSalaries:=0 End if
:(Form event=On Clicked) [Employees]Salary:=arSalaries{arSalaries} End case
Find in arrayコマンドは、配列内の特定の値を検索します。前述の例を使用すると、次のコードは、リクエストダイアログボックスに“Richard”と入力した場合に、その値が“Richard”である要素を選択します:
$vsName:=Request("名前を入力:") If(OK=1) $vlElem:=Find in array(atNames;$vsName) If($vlElem>0) atNames:=$vlElem Else ALERT($vsName+"は名前のリストに存在しません。") End if End if
` asColors コンボボックスオブジェクトメソッド Case of
:(Form event=On Load) ARRAY STRING(31;asColors;3)
asColors{1}:="青"
asColors{2}:="白"
asColors{3}:="赤"
:(Form event=On Clicked) If(asColors{0}#"") ` オブジェクトは自動でこの値を変更します ` コンボボックスのOn Clickedイベントは ` 追加の処理が必要な場合のみ使用されます End if
:(Form event=On Data Change) ` Find in arrayは要素0を無視するので、-1または>0が返される If(Find in array(asColors;asColors{0})<0) ` 入力された値は、オブジェクトに添付された値の一つではない ` 再利用のためこの値をリストに追加する APPEND TO ARRAY(asColors;asColors{0}) Else ` 入力された値は、リストに存在する End if End case