PPG.PPGLayout

導入

v4.0

詳細

現在のインスペクト対象オブジェクトのPPGLayoutを戻します。論理コードからPPGLayout の内容を変更することによりユーザインターフェイスを動的に変更できます。変更が完了したら、PPG.Refreshを使用してインターフェイスを書き換えます。

JScript の例

// JScript Custom Property example demonstrating how to
// build a simple Script viewer by using the
// siControlFolder, siControlCombo and multi-line string
// control.
//
// Note: This example could be extended: for example by adding a 
// "Save" and "New" button.
Main()
function Main()
{
        var oCustomProperty = ActiveSceneRoot.AddProperty( 
                                  "CustomProperty", false,
                                  "Script View" ) ;
        oCustomProperty.AddParameter3( "Dir", siString ) ;
        oCustomProperty.AddParameter3( "Scripts", siString ) ;
        oCustomProperty.AddParameter3( "File", siString ) ;
        var oLayout = oCustomProperty.PPGLayout
        oLayout.AddGroup( "Script Directory" ) ;
        var oItem = oLayout.AddItem( "Dir", "Directory", "Folder" ) ;   
        oItem.SetAttribute( "NoLabel", true ) ; 
        oLayout.EndGroup() ;
        oLayout.AddGroup( "Script File" ) ;
        var oItem = oLayout.AddEnumControl( "Scripts", Array(),
                             "", siControlCombo ) ;
        oItem.SetAttribute( "NoLabel", true ) ; 
        oLayout.EndGroup();
        oLayout.AddGroup( "File Contents" ) ;
        var oItem = oLayout.AddString( "File", "", true, 200 ) ;
        oItem.SetAttribute( "NoLabel", true ) ; 
        oLayout.EndGroup() ;
        oLayout.Language = "Jscript" ;
        oLayout.Logic = OnInit.toString() +
                             PopulateCombo.toString() +
                             Dir_OnChanged.toString() +
                             Scripts_OnChanged.toString();
        strDefaultDir = Application.InstallationPath( siUserPath ) + 
                             "/Data/Scripts" ;
        oCustomProperty.Dir = strDefaultDir ;   
        InspectObj( oCustomProperty );
}
//
// The remaining code is event code which
// is injected into the PPG layout.
//
function OnInit()
{
        PopulateCombo() ;       
}
function Dir_OnChanged()
{
        PopulateCombo() ;
        PPG.File.Value = "" ;
}
function Scripts_OnChanged()
{
        strDir = PPG.Dir.Value 
        strScript = PPG.Scripts.Value 
        if ( strDir == "" || strScript == "" )
        {
                PPG.File.Value = "" ;
                return ;
        }
        try
        {
                var oFSO = new ActiveXObject( "Scripting.FileSystemObject" ) ;          
                var oFile = oFSO.OpenTextFile( strDir + "/" + strScript ) ;
                PPG.File.Value = oFile.ReadAll() ;
        }
        catch( e )
        {
                PPG.File.Value = "" ;
                Application.LogMessage ( "Error reading file " + 
                             strDir + "/" + strScript + 
                             "(" + e.Description + ")" ) ;
        }
}
function PopulateCombo()
{
        strDir = PPG.Dir.Value ;
        strOldValue = PPG.Scripts.Value ; 
        // Get access to the PPGLayout object
var oLayout = PPG.PPGLayout ;
        // The Combo box definition is part of the layout.
        // We look it up based on the script name of the associated
        // parameter
        var oCombo = PPG.PPGLayout.Item( "Scripts" ) ;
        if ( strDir == "" )
        {
                //Flush any contents
                oCombo.UIItems = null ;
                PPG.Scripts.Value = "" ;
        }
        else
        {
                var oFSO = new ActiveXObject( "Scripting.FileSystemObject" ) ;          
                var oItems = new Array() ;
                try
                {
                        bFoundOldValue = false ;
                        var oFolder = oFSO.GetFolder( strDir ) ;
                   fc = new Enumerator(oFolder.files);
                   for (; !fc.atEnd(); fc.moveNext())
                   {
                                var oFile = fc.item() ;
                                if ( -1 != oFile.Name.indexOf( ".vbs" ) ||
                                          -1 != oFile.Name.indexOf( ".js" ) ||
                                          -1 != oFile.Name.indexOf( ".pys" ) ||
                                          -1 != oFile.Name.indexOf( ".pls" ) )
                                {                                                                       
                                        // Both label and value will be the string name
                                        oItems.push( oFile.Name ) ;
                                        oItems.push( oFile.Name ) ;
                                        if ( strOldValue == oFile.Name )
                                        {
                                                bFoundOldValue = true ;
                                        }
                                }
                   }
                        oCombo.UIItems = oItems ;
                        if ( bFoundOldValue )
                        {
                                // This is the case when you close and reopen the
                                // property page - we want to restore the original 
                                // setting if possible.
                                PPG.Scripts.Value = strOldValue ;
                        }
                        else
                        {
                                // We leave the value empty
                                // so that the user actually 
                                // picks a script file
                                // before we load anything
                                PPG.Scripts.Value = "" ;
                        }
                }
                catch( e )
                {
                        Application.LogMessage( "Error finding script files" +
                           " in specified directory: " + e.Description );
                }
        }       
        // Necessary to make sure the updated Combo is drawn
        PPG.Refresh() ;
}

関連項目

ProjectItem.PPGLayout InspectObj