PPG.Close

導入

v4.0

詳細

PPg を閉じます。これは、実際に InspectObj 引数を使用することなく、プロパティページにおける擬似モーダルの動作をシミュレートする場合に便利です。

スクリプト構文

PPG.Close();

JScript の例

// Jscript example of a pseudo-modal, self-destructive

// property page.

//

// In cases where a fully modal dialog box isn't suitable

// you can accomplish a very similar feature 

ClosePPGDemo() ;

function ClosePPGDemo()

{

	newscene( null, false ) ;

	var oPSet = ActiveSceneRoot.AddCustomProperty( 

					"CloseDemo", 

					false ) ;

	oPSet.AddParameter3( "MyValue", siInt4 ) ;

	oPSet.AddParameter3( "Pickedobj", siString ) ;

	var oPPGLayout = oPSet.PPGLayout ;

	oPPGLayout.AddItem( "MyValue" ) ;

	oPPGLayout.AddGroup( "Picked Object" )

	oPPGLayout.AddRow() ;

	var oPPGItem = oPPGLayout.AddItem( "Pickedobj" ) ;

	oPPGItem.SetAttribute( siUINoLabel, true ) ;	

	oPPGItem = oPPGLayout.AddButton( "Pick", "Pick..." ) ;

	oPPGItem.WidthPercentage = 10 ;

	oPPGLayout.EndRow() ;

	oPPGLayout.EndGroup() ;

	oPPGLayout.AddRow();

	oPPGLayout.AddButton( "OK" ) ;

	oPPGLayout.AddButton( "Cancel" ) ;	

	oPPGLayout.EndRow();

	oPPGLayout.Language = "JScript" ;

	oPPGLayout.SetAttribute( "LogicPrefix", "CloseDemo_" ) ;

	oPPGLayout.Logic = CloseDemo_OK_OnClicked.toString() + 

		CloseDemo_Cancel_OnClicked.toString() +

		CloseDemo_Pick_OnClicked.toString() ;

	// Pop up the Propery Page.

	// It is not modal, but will clean itself up			

	InspectObj( oPSet ) ;

	// Because the dialog is not modal

	// the script will continue to execute here

	// immediately, even before the Custom Property

	// page has a change to appear.  Be careful not

	// to assume the user has already made some selection

	// and dismissed the dialog.  instead we leave it

	// for the Spdl logic callback to complete whatever

	// work we are trying to accomplish

	Logmessage( "After InspectObj call" ) ;

}

// TIP: neither of these callbacks will get called if the

// user closes the dialog using the "X".  These only get

// called if the specific OK and Cancel buttons are clicked.

function CloseDemo_OK_OnClicked()

{

	if ( PPG.PickedObj == "" )

	{

		// Example of doing some validation 

		// before allowing the user to 

		// proceed

		XSIUIToolkit.MsgBox( "Please pick an object first" ) ;

		return ;

	}		

	// Here is where you would do something

	// based on the values in the property page	

	Logmessage( "User clicked OK with value: " + PPG.MyValue ) ;	

	// Cleanup:

	// Delete the object from right beneath us

	DeleteObj( PPG.Inspected.Item(0) ) ;

	// Clearly it would not be safe to make any further

	// Object Model calls now that our object has been

	// deleted

	// However rather than leaving an empty frame

	// we can close the whole window	

	PPG.Close() ;

}

function CloseDemo_Cancel_OnClicked()

{

	// Same as OK, but don't do any action

	DeleteObj( PPG.Inspected.Item(0) ) ;

	PPG.Close() ;

}

function CloseDemo_Pick_OnClicked()

{

	// The PickObject command is a good candidate for 

	// a pseudo-modal dialog, because it

	// does not work in modal dialogs.

	// PickObject returns multiple arguments

	var aRtn = PickObject( "Select Object", "Select Object" )

	var buttonChoice = aRtn.Value( "ButtonPressed" ) ;

	if ( buttonChoice != 0 ) 

	{

		PPG.PickedObj.Value = aRtn.Value( "PickedElement" ) ;

	}

}

// Typical results of running this script:

// 

//INFO : "After InspectObj call"

//INFO : "User clicked OK with value: 43"

関連項目

InspectObj DeleteObj