| 4D v13.4Modified | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v13.4
 Modified 
         | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Modified ( aField ) -> 戻り値 | ||||||||
| 引数 | 型 | 説明 | ||||||
| aField | フィールド |   | テストするフィールド | |||||
| 戻り値 | ブール |   | フィールドに新しい値が代入されていればTrue, そうでなければFalse | |||||
この関数は互換性のために保持されています。この関数は、バージョン6の4Dで廃止されたイベントの管理方法 (Before, Duringその他のコマンド参照) に基づいています。現在は、Form eventコマンドを使用し、On Data Changeイベントが返されるかどうかをチェックする方法の使用を強く推奨します。
Modifiedはデータ入力中、プログラムを使用してfieldに値が代入されていたり、値が編集された場合に、Trueを返します。Modifiedコマンドはフォームメソッド(またはフォームメソッドから呼ばれたサブルーチン)で使用されなければなりません。
このコマンドは同じ実行サイクル内でのみ意味のある値を返します。特に以前のDuring実行サイクルに対応するフォームイベントでは、Falseに設定されます。
データ入力時には、(元の値が変更されたかどうかに関わらず)ユーザがフィールドを編集した後別のフィールドへ移動するか、コントロールをクリックすると、フィールドが更新されたとみなされます。tabキーでフィールドを移動しただけでは、ModifiedはTrueにならない点に注意してください。ModifiedがTrueになるためには、フィールドが編集されなければなりません。
メソッドの実行時には、フィールドに値が割り当てられると(異なる値かどうかに関係なく)、フィールドが編集されたものと解釈されます。
Note: Modifiedは、PUSH RECORDとPOP RECORDコマンド実行後は、常にTrueを返します。
いずれの場合でも、フィールドの値が実際に変更されたかどうかを調べるには、Old コマンドを使用します。
Note: Modifiedはあらゆるタイプのフィールドに対して適用できますが、このコマンドをOld コマンドと組み合わせて使用する場合には、Old コマンドの制約に注意してください。詳細についてはOld コマンドの説明を参照してください。
データ入力時には、フォームメソッドでModifiedを使用するよりも、オブジェクトメソッドで処理を実行する方が簡単です。フィールドが修正される度にOn Data Changeイベントがオブジェクトメソッドに送信されるので、オブジェクトメソッドの利用はフォームメソッドでModifiedを使用したのと同じ意味を持ちます。
Note: 処理を正しく実行するため、Modified コマンドはフォームメソッドまたは、フォームメソッドから呼び出されるメソッド内でのみ使用します。
次の例は、[Orders]Quantity フィールドや[Orders]Price フィールドが変更されたかどうかを判定します。どちらかが変更されると、[Orders]Total フィールドを再計算します。
 If((Modified([Orders]Quantity)|(Modified([Orders]Price))
    [Orders]Total :=[Orders]Quantity*[Orders]Price
 End if2番目の行をサブルーチンにして、[Orders]Quantity フィールドと[Orders]Price フィールドのオブジェクトメソッドのOn Data Changeフォームイベントでそのサブルーチンを呼び出しても、同じ結果となります。
[anyTable]テーブルのレコードを選択し、次に[anyTable]Important fieldフィールドが修正される可能性がある複数のサブルーチンを呼び出しますが、これらのメソッドはレコードの保存を行いません。メインのメソッドの終わりで、Modified コマンドを使用してレコードを保存する必要があるかどうかを調べています:
  ` レコードがカレントレコードとして選択済みです
  ` サブルーチンを使用して処理を行います
 DO SOMETHING
 DO SOMETHING ELSE
 DO NOT FORGET TO DO THAT
  ` ...
  ` レコードを保存する必要があるか検証します
 If(Modified([anyTable]Important field))
    SAVE RECORD([anyTable])
 End if
	プロダクト: 4D
	テーマ: データ入力
	番号: 
        32
        
        
        
	
        
         
        
	変更: 4D 2004