PPGEvent


詳細

このコールバックは、ユーザがプロパティ ページを操作するときに発生します。

このコールバックを使って、プロパティ ページ上のユーザ インターフェイスのイベントを処理します。 このコールバックは、ユーザが次のいずれかの操作を行うと発生します。

また、このコールバックは、プロパティ ページを開いたり、パラメータ値を変更するスクリプト コードによってトリガーされることもあります。

警告: このコールバックは、C# のみのオブジェクト モデルで使用できます。 スクリプトには、オブジェクト モデルの各 PPG イベントに個別のコールバックがあります。 スクリプト コールバックには入力引数がないため、代わりにグローバル PPG オブジェクトを使用することで、プロパティ ページのコントロールとレイアウトにアクセスできます。


適用対象

C++ および C# のカスタム プロパティ


構文

public class <property_name>

{

	public bool PPGEvent( Context in_context )

	{

		...

	}

}
CStatus <property_name>_PPGEvent( CRef& in_context )

{ 

	... 

}

<property_name> は、PluginRegistrar.RegisterProperty の呼び出しで指定されている名前です。この名前に含まれるスペースはアンダースコアに置き換えられます。 たとえば、My Property という名前のプロパティを登録する場合、コールバック関数の名前の先頭は My_Property になります。


パラメータ

パラメータ 言語 タイプ 説明
in_context C# PPGEventContext PPGEventContext オブジェクト。

PPGEventContext.EventID は、コールバックをトリガーしたイベントを識別します。

siOnInitsiOnClosesiTabChange、および siButtonClicked イベントの場合、PPGEventContext.SourceCustomProperty を返します。

siParameterChange イベントの場合、PPGEventContext.SourceParameter オブジェクトを返します。 CustomProperty を取得するには、ParameterSIObject.Parent プロパティを呼び出します。
C++ CRef& PPGEventContext へのリファレンス。

PPGEventContext::GetEventID は、コールバックをトリガーしたイベントを識別します。

siOnInitsiOnClosesiTabChange、および siButtonClicked イベントの場合、PPGEventContext::GetSourceCustomProperty を返します。

siParameterChange イベントの場合、PPGEventContext::GetSourceParameter オブジェクトを返します。 Parameter::GetParent から CustomProperty を取得できます。


コンテキスト属性

属性 詳細
Button siButtonClicked イベントの場合、クリックされたボタンの名前を指定します。
Close True に設定すると、プロパティ ページは強制的に閉じます。
Refresh True に設定すると、プロパティ ページのレイアウトは強制的に更新されます。
Tab siTabChange イベントの場合、クリックされたタブの名前を指定します。


// PPGEvent callback generated by the Custom Property Wizard



SICALLBACK MyCppProperty_PPGEvent( const CRef& in_ctxt )

{

 // This callback is called when events happen in the user interface

 // This is where you implement the "logic" code.



 // If the value of a parameter changes but the UI is not shown then this

 // code will not execute.  Also this code is not re-entrant, so any changes

 // to parameters inside this code will not result in further calls to this function



 Application app ;



 // The context object is used to determine exactly what happened

 // We don't use the same "PPG" object that is used from Script-based logic code 

 // but through the C++ API we can achieve exactly the same functionality.

 PPGEventContext ctxt( in_ctxt ) ;



 PPGEventContext::PPGEvent eventID = ctxt.GetEventID() ;



 if ( eventID == PPGEventContext::siOnInit )

 {

     // This event meant that the UI was just created.

     // It gives us a chance to set some parameter values.

     // We could even change the layout completely at this point.



     // For this event Source() of the event is the CustomProperty object



     CustomProperty prop = ctxt.GetSource() ;



     app.LogMessage( L"OnInit called for " + prop.GetFullName() ) ;



     /* If you regenerate the layout then call this:

     ctxt.PutAttribute(L"Refresh",true);

     */

 }

 else if ( eventID == PPGEventContext::siOnClose )

{

     // This event meant that the UI was just closed by the user.

     // For this event Source() of the event is the CustomProperty object

     CustomProperty prop = ctxt.GetSource() ;

     app.LogMessage( L"OnClose called for " + prop.GetFullName() ) ;

 }

 else if ( eventID == PPGEventContext::siButtonClicked )

 {

     // If there are multiple buttons

     // we can use this attribute to figure out which one was clicked.

     CValue buttonPressed = ctxt.GetAttribute( L"Button" ) ;



    app.LogMessage( L"Button pressed: " + buttonPressed.GetAsText() ) ;

 }

 else if ( eventID == PPGEventContext::siTabChange )

 {

     // We will be called when the PPG is first opened

     // and every time the tab changes



     // Retrieve the label of the tab that is now active

     CValue tabLabel = ctxt.GetAttribute( L"Tab" ) ;



     app.LogMessage( L"Tab changed to: " + tabLabel .GetAsText() ) ;

 }

 else if ( eventID == PPGEventContext::siParameterChange )

 {

     // For this event the Source of the event is the parameter

     // itself

     Parameter changed = ctxt.GetSource() ;

     CustomProperty prop = changed.GetParent() ;

     CString   paramName = changed.GetScriptName() ; 



     app.LogMessage( L"Parameter Changed: " + paramName ) ;

 }



 return CStatus::OK ;

}


関連項目