dotnetcontrol

3ds Max 9 以降では、 dotNetControl クラスは、コントロールに関連するプロパティ、メソッド、およびイベントを、反映(リフレクション)によって公開します。

プロパティ アクセスは、MAXScript の数値データ タイプ(必要に応じて桁数を調整)、文字列、ブール値、dotNetControl、dotNetObject、および dotNetClass の各値を取ります。プロパティ アクセスは、通常のプロパティ アクセスの指定[control.property]、および get/setProperty を介して行われます。

コントロール メソッドにアクセスすることによって、dotNetMethod インスタンスが作成されます。

dotNetControl のイベント ハンドラは、すべての UI コントロールがイベント ハンドラを使用する場合と同じように処理されます。つまり、ユーザは、UI コントロールでイベントが発生したときに呼び出されるロールアウトの定義の中で、イベントと同じ名前の名前付きスクリプト イベント ハンドラを定義します。

イベント ハンドラの追加および管理には新しいメソッドが使用されます。イベントが発生すると、これらの新しいメソッドは呼び出すべきコールバック関数の登録および登録解除を行います。コールバック関数に渡される引数には、オブジェクト、イベント名、イベント ハンドラによって渡された引数などがあります。詳細は、「dotNet 構造体のメソッド」を参照してください。

コンストラクタ:

   

dotNetControl <name> <class_type_string> [{<property_name>:<value>}] 	 

コントロールが作成され、イベント ハンドラが割り当てられた後にキーワード引数がコントロールに適用され、このコントロールはその後ロールアウトに追加されます。

   

プロパティ:

.focus 

true に設定すると、コントロールにフォーカスが設定されます。false(既定値)に設定すると、コントロールにフォーカスが設定されません。

   

.enable 

false に設定すると、コントロールは無効になります。true(既定値)に設定すると、コントロールは有効になります。

   

メソッド:

getProperty <dotNetControl> <prop name> [asDotNetObject:<bool>] 

指定されたプロパティの値を返します。

asDotNetObject が false (既定値)の場合は、この値は可能ならネイティブ MAXScrript 値に変換され、true の場合は、この値は dotNetControl または dotNetObject の値として返されます。

   

setProperty <dotNetControl> <prop name> <value> 

指定されたプロパティの値を設定します。指定された値がネイティブ MAXScript 値である場合は、この値は可能であれば適切な DotNet 値に変換されます。

   

getPropNames <dotNetControl> [showStaticOnly:<bool>] [declaredOnTypeOnly:<bool>] 

コントロールによって公開されるプロパティ名の配列を返します。

showStaticOnly が true (既定値)の場合は静的プロパティのみが表示され、false の場合は静的プロパティとインスタンス プロパティが表示されます。

declaredOnTypeOnly が true の場合は指定したコントロールで宣言されているプロパティのみが表示され、false (既定値)の場合はコントロールおよびその派生元のクラスのプロパティが表示されます。

このメソッドの結果は、名前でソートされます。実際に返されるプロパティには、DotNet でいうプロパティとフィールドの 2 つの内容が含まれています。最初にプロパティがソート順に表示され、続いてフィールドがソート順に表示されます。

   

showProperties <dotNetControl> ["prop_pat"] [to:<stream>] [showStaticOnly:<bool>] [showMethods:<bool>] [showAttributes:<bool>] [declaredOnTypeOnly:<bool>] 

プロパティ パターン(prop_pat)に一致する名前を持ったコントロールによって公開されるプロパティを表示します。

to が指定されていない場合はリスナーに出力され、それ以外の場合は指定されたストリームに出力されます。

showStaticOnly が true (既定値)の場合は静的プロパティのみが表示され、false の場合は静的プロパティとインスタンス プロパティが表示されます。

showMethods が true の場合は、get メソッドおよび set メソッドのシグネチャ(存在する場合)が表示されます。既定値は false です。

showAttributes が true の場合は、プロパティに関連付けられているアトリビュートが表示されます。既定値は false です。

declaredOnTypeOnly が true の場合は指定したコントロールで宣言されているプロパティのみが表示され、false (既定値)の場合はコントロールおよびその派生元のクラスのプロパティが表示されます。

このメソッドの結果は、名前でソートされます。実際に返されるプロパティには、DotNet でいうプロパティとフィールドの 2 つの内容が含まれています。最初にプロパティがソート順に表示され、続いてフィールドがソート順に表示されます。

   

showMethods <dotNetControl> ["prop_pat"] [to:<stream>] [showStaticOnly:<bool>] [showSpecial:<bool>] [showAttributes:<bool>] [declaredOnTypeOnly:<bool>] 

プロパティ パターン(prop_pat)に一致する名前を持ったコントロールによって公開されるメソッドを表示します。

to が指定されていない場合はリスナーに出力され、それ以外の場合は指定されたストリームに出力されます。

showStaticOnly が true (既定値)の場合は静的プロパティのみが表示され、false の場合は静的プロパティとインスタンス プロパティが表示されます。

showSpecial が true の場合は、通常はユーザによって呼び出されることのないメソッド(プロパティ値を設定するためのメソッドやイベント ハンドラを起動するためのメソッド)が表示されます。既定値は false です。

showAttributes が true の場合は、プロパティに関連付けられているアトリビュートが表示されます。既定値は false です。

declaredOnTypeOnly が true の場合は指定したコントロールで宣言されているプロパティのみが表示され、false (既定値)の場合はコントロールおよびその派生元のクラスのプロパティが表示されます。

結果は、名前でソートされます。ソートにおいて名前の次に優先されるのは、パラメータの数です。

   

showEvents <dotNetControl> ["prop_pat"] [to:<stream>] [showStaticOnly:<bool>] [declaredOnTypeOnly:<bool>] 

プロパティ パターン(prop_pat)に一致する名前を持ったコントロールによって公開されるイベントを表示します。

to が指定されていない場合はリスナーに出力され、それ以外の場合は指定されたストリームに出力されます。

showStaticOnly が true (既定値)の場合は静的プロパティのみが表示され、false の場合は静的プロパティとインスタンス プロパティが表示されます。

declaredOnTypeOnly が true の場合は指定したコントロールで宣言されているプロパティのみが表示され、false (既定値)の場合はコントロールおよびその派生元のクラスのプロパティが表示されます。

結果は、名前でソートされます。

   

dotNet.showConstructors<dotNetClass> [to:<stream>] 

このコントロールによって公開されるコンストラクタを表示します。

to が指定されていない場合はリスナーに出力され、それ以外の場合は指定されたストリームに出力されます。

コントロールのクラス名によって DotNet コントロールを作成することもできます。

例:

dotNetControl f1 "System.Windows.Forms.MonthCalendar" align:#left height:180

クラス インスタンスを作成するためには、DotNet には情報のみでなく、コンストラクタ文字列内のアセンブリ情報も必要となります。次の例は、必要な文字列をすべて示したもので、実際に使用することもできるものです。

例:

dotNetControl f1 "System.Windows.Forms.MonthCalendar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" align:#left height:180

多くの場合、ユーザはアセンブリのバージョンに注意を払うことはなく、単にクラス名を指定しようとします。MAXScript UI コントロール ラップは、指定されたクラス名を使用してコントロールの作成を試み、コントロールを作成できなければ「System.Windows.Forms」アセンブリ情報をクラス名に付加してさらに解決を試みます。

指定されたクラス名をそれでも解決できない場合は、クラス名の先頭に「System.」を付加して、さらに解決を試みます。したがって、次のように処理されます。

例:

dotNetControl f1 "Windows.Forms.MonthCalendar" align:#left height:180

指定されたクラス名をそれでも解決できない場合は、クラス名の先頭に「System.Windows.Forms」を付加して、さらに解決を試みます。したがって、次のように処理されます。

例:

dotNetControl f1 "MonthCalendar" align:#left height:180

関連事項