v4.0
PPg を閉じます。これは、実際に InspectObj 引数を使用することなく、プロパティページにおける擬似モーダルの動作をシミュレートする場合に便利です。
PPG.Close(); |
// 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" |