ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v20.6
EXECUTE METHOD IN SUBFORM

EXECUTE METHOD IN SUBFORM 


 

EXECUTE METHOD IN SUBFORM ( subformObject ; formula {; return {; param} {; param2 ; ... ; paramN}} ) 
引数   説明
subformObject  テキスト in サブフォームオブジェクトの名称
formula  オブジェクト, テキスト in 実行するプロジェクトメソッドの名前、または Formulaオブジェクト
return  演算子, 変数 in メソッドが値を戻さない場合 *
in メソッドから返される値
param  in メソッドに渡す引数

説明   

EXECUTE METHOD IN SUBFORM コマンドを使用して サブフォームオブジェクトsubformObject のコンテキストにおいてformula 引数で指定したコードを実行できます。

呼ばれたコードは任意の数の引数をparam に受け取ることができ、また戻り値はreturn に返されます。メソッドが値を戻さない場合は、return* を渡します。

formula 引数では、subformObject のコンテキストで実行される4D コードを指定します。以下のいずれかを渡すことができます:

  • フォーミュラオブジェクト(Formula オブジェクト 参照)。ォーミュラオブジェクトは実行可能な式であればどんな式も格納することができます。これには関数やプロジェクトメソッドなども含まれます。
  • プロジェクトメソッド名を格納した文字列

 

実行コンテキストは呼び出されたメ ソッド内でも保持されます。つまりカレントフォームおよびカレントフォームイベントは指定されたまま引き継がれます。サブフォームがコンポーネント由来の 場合、呼び出されたメソッドまたは関数はコンポーネントに属していなければならず、また"コンポーネントとホストデータベースで共有する"プロパティがチェックされていなければ なりません。

このコマンドは (subformObject オブジェクトを格納している) 親フォームのコンテキスト、例えばフォームメソッド等から実行しなくてはなりません。

注意: formula メソッドは、subformObject がカレントページに見つからないか、インスタンス化されていない場合、実行されません。

親フォーム"Company"中にサブフォーム"ContactDetail"が置かれています。ContactDetailフォームが設定されたサブフォームオブジェクトの名前は"ContactSubform"です。ここでcompanyのフィールド値に基づき、サブフォーム内の特定の要素のアピアランスを変更したいとします (例えば[Company]City="New York"のときは"contactname"を赤に、[Company]City="San Diego"のときは青にするなど)。このメカニズムはSetToColor メソッドに実装されています。この結果を得るために、SetToColor メソッドをCompany親フォームの"On Load"フォームイベントのプロセスから直接呼び出すことはできません。なぜなら"contactname"オブジェクトはカレントフォームではなく、 "ContactSubform"サブフォームオブジェクト中に表示されているフォームに属しているからです。そのため正しく動作させるために、メソッドはEXECUTE METHOD IN SUBFORM コマンドを使用して実行されなければなりません。

 Case of
    :(Form event code=On Load)
       Case of
          :([Company]City="New York")
             $Color:=$Red
          :([Company]City="San Diego")
             $Color:=$Blue
          Else
             $Color:=$Black
       End case
       EXECUTE METHOD IN SUBFORM("ContactSubform";Formula(SetToColor);*;$Color)
 End case

コンポーネントとして使用される予定のデータベースを開発しています。このデータベースには共有プロジェクトフォーム (例として"Calender"と名付けます) が含まれています。またこのフォームにはダイナミック変数やカレンダを調整するための公開プロジェクトメソッド (SetCalendarDate(varDate)) が含まれています。
このメソッドがCalenderフォームメソッドで直接使用される場合、開発者は直接このメソッドをフォームの"On Load"イベントで呼び出すことができます:

 SetCalendarDate(Current date)
しかしホストデータベースのコンテキストで、プロジェクトフォームに2つの"Calendar"サブフォーム"Cal1"および"Cal2"が配置されている状況を想像してください。Cal1の日付を2010/01/01、Cal2の日付を2010/05/05に設定する必要があるとします。このケースでは、コンポーネントメソッドSetCalendarDate を直接呼び出すことはできません。なぜならコンポーネントメソッドはどちらのフォームに処理を適用したらよいかわからないからです。そこで、このメソッドを以下の方法で呼び出す必要があります:

 EXECUTE METHOD IN SUBFORM("Cal1";Formula(SetCalendarDate);*;!01/01/20!)
 EXECUTE METHOD IN SUBFORM("Cal2";Formula(SetCalendarDate);*;!05/05/20!)

コマンドが正しく実行されるとシステム変数OKに1が設定され、そうでなければ0が設定されます。

 
プロパティ 

プロダクト: 4D
テーマ: フォームイベント
番号: 1085

このコマンドはOKシステム変数を更新します

 
ページの目次 
 
履歴 

初出: 4D v12
変更: 4D v19 R6

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v20)
ランゲージリファレンス ( 4D v20.1)
ランゲージリファレンス ( 4D v20.2)
ランゲージリファレンス ( 4D v20.3)
ランゲージリファレンス ( 4D v20.4)
ランゲージリファレンス ( 4D v20.5)
ランゲージリファレンス ( 4D v20.6)