Add a dynamically created checkbox in DataGrid

Rquirement: Add a dynamically created checkbox in the first column of a dynamically created a DataGrid .
Note: The dataprovider of the DataGrid is a collectible arraycollection, which is populated by tables in the database. Therefore, whenever the DataGrid columns can varry depents on the table.

The code below would work for you. Please give it a try.

Import mx.controls.dataGridClasses.DataGridColumn;
Import mx.collections.ArrayCollection;
           
Import mx.controls.DataGrid;
Import mx.controls.CheckBox;
           
[Bindable]
private var dtGrid:DataGrid;
[Bindable]
private var chkBox:CheckBox;
           
[Bindable]
private var peeps: ArrayCollection collection;
           
            
           
private function init (): void
{
friends = new ArrayCollection();
peeps.addItem ({firstName: "Beautiful", lastName: "Dude", age: 24 gender: "male"});
peeps.addItem ({firstName: "Red", lastName: "Dude", age: 25 gender: "male"});
peeps.addItem ({firstName: "Top", lastName: "Guy" of the age: 25 gender: "male"});
peeps.addItem ({firstName: "Cute", lastName: "Girl", age: 24, sex: "female"});
peeps.addItem ({firstName: lastName "to"hot,":"Chick", age: 24, sex:"female"});
peeps.addItem ({firstName: lastName "Lazy",: "The man", age: 25 gender: "male"});
                  
var dataGridColumn:DataGridColumn = new DataGridColumn("");
dataGridColumn.itemRenderer = new ClassFactory (CheckBox);
          
dtGrid = new DataGrid();
dtGrid.dataProvider = friends;
this.addElement (dtGrid);
                  
var tempColArray:Array = new Array();
tempColArray [0] = dataGridColumn;
for (var i: int = 0; dtGrid.columns.length > i; ++ i)
{
tempColArray [i + 1] = dtGrid.columns [i];
}
                  
dtGrid.columns = tempColArray;
dtGrid.invalidateDisplayList ();
}
]]>

Tags: Flex

Similar Questions

  • Dynamically create checkboxes based on a value in a table

    Hi friends,

    I am looking for crerating several checkboxes based on a value in the table. For example if I'm clicking on a name of 'material' in a report, I need to show all interfaces for equipment like the checkboxes in another page. There is a table that contains interfaces corresponding to a particular equipment. The box should be checked if this particular interface is "put into service". This info is present in the table "provisioing. How can I achieve this. Help, please.


    Kind regards
    TJ

    The display order of your boxes depends on your SELECT statement, just put an ORDER BY in there, and you can do whatever you want.

    Don't forget: the LOV-statement must select all of the possibilities, with the process, you set the provisioned to checked.

    brgds,
    Peter

    -----
    Blog: http://www.oracle-and-apex.com
    ApexLib: http://apexlib.oracleapex.info
    BuilderPlugin: http://builderplugin.oracleapex.info
    Work: http://www.click-click.at

  • Dynamically creating DataGrid imported .txt file

    I have a tab delimited .txt file exported from Excel which looks like this:

    Sector Section the family Brand Image Description price quantity Code

    Sector 1 Section 1 Description of the Fiat 10000 1 10000 10000 8 25.00 family

    Sector 1 Section 1 1 10001 Kawasaky 10001 Description 10001 10 45.00 family

    Sector 1 Section 1 10002 1 Ford 10002 Description 10002 15 10,00 family

    Sector 1 Section 1 2 10003 Fiat 10003 Description 10003 100 8.00 family

    In this case, I have nine columns, but the method should work with any number of columns.

    The code is developed in Flash Builder, but it's especially AS3.

    I dynamically create a DataGrid from these values. It's my first attempt:

    <? XML version = "1.0" encoding = "utf-8"? >

    " < = xmlns:fx s:Application ' http://ns.Adobe.com/MXML/2009 "

    xmlns:s = "library://ns.adobe.com/flex/spark".

    xmlns:MX = "library://ns.adobe.com/flex/mx".

    creationComplete = "creationCompleteHandler (event)" >

    < fx:Script >

    <! [CDATA]

    import flash.net.URLLoader;

    import flash.net.URLRequest;

    Import mx.collections.ArrayCollection;

    Import mx.controls.DataGrid;

    Import mx.controls.dataGridClasses.DataGridColumn;

    Import mx.events.FlexEvent;

    private var loader: URLLoader = new URLLoader();

    private var request: URLRequest = new URLRequest("txtData/products.txt");

    protected function creationCompleteHandler(event:FlexEvent):void {}

    loader.addEventListener (Event.COMPLETE, loader_complete);

    Loader.Load (request);

    }

    protected function loader_complete(evt:Event):void {}

    Create array of lines in .txt file loaded

    var lines: Array = evt.target.data.split(/\n/);

    var dg:DataGrid = new DataGrid();

    var columns: Array = [];

    var dataProvider:ArrayCollection = new ArrayCollection();

    for (var i: Number = 0; i < lines.length; i ++) {}

    String: var line = lines [i];

    Create array of column values of each row

    var lineArray:Array = line.split(/\t/);

    for (var j: Number = 0; j < lineArray.length; j ++) {}

    var prop: String = lineArray [j];

    {if(i==0)}

    If the first row of the table, create column and assign the value of prop to dataField

    var c:DataGridColumn = new DataGridColumn (prop);

    c.dataField = prop;

    Columns.push (c);

    }

    else {}

    create the new object and add it to the dataProvider

    var dataObject:Object = {area: lineArray [0], Section: lineArray [1], family: lineArray [2], Code: lineArray [3], mark: lineArray [4], Image: lineArray [5], Description: lineArray [6], quantity: lineArray [7], price: lineArray [8]};

    dataProvider.addItem (dataObject);

    }

    }

    }

    assign columns to the dataGrid control

    CGI Columns = columns;

    assign the dataProvider of the dataGrid

    dg.dataProvider = dataProvider;

    Add the DataGrid on stage

    this.addElement (dg);

    }

    []] >

    < / fx:Script >

    < / s:Application >

    I was able to create columns and dataFields dynamically, instead, I wasn't able to do it for the data provider items (see below):

    var dataObject:Object = {area: lineArray [0], Section: lineArray [1], family: lineArray [2], Code: lineArray [3], mark: lineArray [4], Image: lineArray [5], Description: lineArray [6], quantity: lineArray [7], price: lineArray [8]};

    How can I create these values dynamically (without knowing the names number and column data area)?

    Thanks in advance

    use:

    If (i == 0) {}

    for (var j: int = 0; j

    var prop: String = lineArray [j];

    var c:DataGridColumn = new DataGridColumn (prop);

    c.dataField = prop;

    Columns.push (c);

    }

    } else {}

    var dataObject:Object = {};

    for (j = 0; j<>

    dataObject [columns [j] .dataField] = lineArray [j];

    }

    dataProvider.addItem (dataObject);

    }

  • Dynamically create (and reference) dialog groups

    I am installing a dialog window that can be easily added to via a CSV file.  The only problem I encountered is; I'm not sure how to create groups dynamically.  Basically, script upward configurations a bunch of texture features and then gives the possibility to save or delete this feature.  Here's the basic idea of what I'm trying to do, but the groups are not able to be created in the way that they are presented:

    featArray = [];
    featArray[0] = new Array("Feature Display Name","feature sub-group",'texture',"feature action",'feature type');
    featArray[1] = new Array("Feature2 Display Name","feature2 sub-group",'texture',"feature2 action",'feature2 type'); //etc.
    
    for(var z in featArray) {
        if(featArray[z][2] == 'texture') {
            w.p1.sp1.add('statictext',undefined,featArray[z][0]);
            w.p1.sp1.g[z] = w.p1.sp1.add('group');
            w.p1.sp1.g[z].orientation = 'row';
            w.p1.sp1.g[z].add('checkbox',undefined,'Save');
            w.p1.sp1.g[z].add('checkbox',undefined,'Strip');
            w.p1.sp1.g[z].children[0].id = featArray[z][0].toLowerCase() + "-save";
            w.p1.sp1.g[z].children[1].id = featArray[z][0].toLowerCase() + "-strip";
        }
    }
    

    If you change the [z] g in g1, it will create each field correctly (visually), but has no way to good reference check boxes to see which are checked.  Any ideas how, or even if, it is possible to dynamically create a different group for each line of the featArray?  And if so, how then referencing the boxes in these groups later?  Thanks in advance for any help!

    You must store the locations in a table IE: -.

    featArray = [];
    featArray[0] = new Array("Feature Display Name","feature sub-group",'texture','feature group','feature type');
    featArray[1] = new Array("Feature Display Name2","feature sub-group2",'texture','feature group2','feature type2'); //etc.
    var w = new Window('dialog','test');
    w.p1= w.add("panel", undefined, undefined, {borderStyle:"black"});
    var x = new Array();
    var count =0;
    for(var z in featArray) {
        if(featArray[z][2] == 'texture') {
            w.p1.add('statictext',undefined,featArray[z][0]);
    w.p1.g = w.p1.add('group');
    w.p1.g.orientation = 'row';
    x[count] = w.p1.g.add('checkbox',undefined,'Save');
    count++;
    x[count] = w.p1.g.add('checkbox',undefined,'Strip');
    count++
        }
    }
    w.test = w.add('button',undefined,'Press to Test');
    w.add('button',undefined,'Cancel');
    w.test.onClick=function(){
    for(var w =0;w 
               
  • Time of design and of the dynamically created controls

    I have a project written in VC6 as a project of the MFC dialog box. In a particular area, I dynamically create several (the exact number depends on user input) CNiGraphs. There is also a two CNiButtons that were created at design time using the resource editor. The problem I have is that when this dialog box is open, a message appears saying it is an eval version and the control will go off after 5 minutes. After 5 minutes of waiting, the CNiButtons 2 go inactive (black tower), but the continuous CNiGraphs of work. I have a valid license of MStudio 8.1.6, version but it seems that these 2 buttons do not recognize the license. There are also other buttons from the moment of conception of the project, but these have no problem at all. When you create the dynamic creation of the CNiGraphs, give them a valid license string, and I was wondering if there is a problem with the time created and dynamically controls created in the same dialog box to design. Anyone know?

    I don't remember, but I can have created these 2 CNiButtons when I was with only an eval license. (All others were undoubtedly create when I got a full license) Could have an impact on them? I have a vague memory of reading somewhere that DTC create controls to check the license when they are created in the designer and store that info in them license. If this is the case does anyone know an easy way to update the license stored in control? I rather not just delete it and Add again because I would avoid having to redo the tab order (unless someone knows how to easily insert something in the middle of the order of tab instead of having to click through all the controls in the correct order)?

    In addition, I don't know if this would affect anything, but the project was originally built with ComponentWorks 1.0, we were forced to move to MStudio when we met a few bugs in CW, so all controls were originally CW controls which have been converted into control of CNi. I doubt that this is so like everywhere else, we changed during controls is not a problem, but I'm ready to try the suggestions.

    Hi JC,.

    I hope you had a good weekend!  I'm glad to hear that you're back running.  Add the extra button was, in fact, causing update the licensing information for the other buttons, as you can imagine.  After further research, I found that the license information are stored only the form of the control, and if this control doesn't change in any way (or in your case, adding a new project), he sees no reason when compiling to recreate a link to the license.  However, after the change of control and a new, it updates the link between the license information, which solved this problem in your case.

    I hope this helps, JC.  Have a great day!

  • How to dynamically create action item?

    Hi, I want to dynamically create point.

    Before I want to create using qml, but does not seem possible

    http://supportforums.BlackBerry.com/T5/Cascades-development/how-to-create-action-item-of-page-dynami...

    So maybe better to use C++ to create dynamically,

    I'm already try but are still not

    So I have a custom control qml (a Navigation pane)

    name List.qml

    the structure is like this:

    NavigationPane {}

    {Page}

    objectName: myPage

    {Of container

    ....

    }

    }

    }

    How to add action item to this .qml?

    I'm already try that, but failed

    C++ :

    Engine QDeclarativeEngine;

    QDeclarativeComponent component(&engine,QUrl::fromLocalFile("List.qml"));)

    QObject * object = component.create ();

    Page * myPage = object->findChild ("Edit");  Maybe, on that note, I'm wrong implemented? -> not found?

    ActionItem * action1 = ActionItem::create () .title ("first action");

    my page-> addAction (action1, ActionBarPlacement:nBar);

    Remove the object;

    How to create this dynamic Action item?

    Help, please

    Thank you

    Hello

    QML, the object name must be included between "" marks.

    Name of the object of your Page will be:

    objectName: "myPage"
    

    You can reach any CPP QML object like this:

    This excerpt comes from YourProjectName.cpp

    // create scene document from main.qml asset
    // set parent to created document to ensure it exists for the whole
    // application lifetime
    
    QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
    
        // create root object for the UI
        AbstractPane *root = qml->createRootObject();
        // set created root object as a scene
        app->setScene(root);
    
    //and here comes the findChild method
    Page* qmlPage = root->findChild("myPage");
    

    After this, you can create any object on the side of C++ QML, as your own code:

    ActionItem* action1 = ActionItem::create().title("First action");
    myPage->addAction(action1, ActionBarPlacement:nBar);
    

    Don't have no need to create a QObejct, or declarative stuff.

  • Dynamically create QmlComponentDefinition objects in the code

    With QML sample:

    // --- main.qml ---Container {    objectName: "fooContainer"    attachedObjects: [        ComponentDefinition {            id: barComponent            source: "Bar.qml"        }    ]}
    
    // --- Bar.qml ---Container {    objectName: "bar"    Label {        text: "FooBar"    }}
    

    I am trying to dynamically create barComponent objects and add them to fooContainer in C++ code.

    So I reference the using fooContainer:

    fooContainer = createdRootObject->findChild("fooContainer");
    

    But how to reference the definition of QML barComponent to use his method createObject()?

    The definition of the element is used to create the object of QML

    To create the C++ object, you need to do:

    qml = QmlDocument::create("asset:///Bar.qml");
    Control *root =  qml->createRootObject();
    fooContainer->add(root)
    
  • Dynamically create headphones...

    Hello

    I have an external swf that I load into Flash and try to achieve communication between the swf file and the charger of the parent.

    In the external swf file, I have a series of events, they are preparing based on that frame the user is enabled, i.e.:

    dispatchEvent(new Event("1"));
    dispatchEvent(new Event("2"));
    dispatchEvent(new Event("3"));
    

    I am trying to create a generic listener function that will add several eventListeners to the scene based on an arbitrary number that will listen to turn for the events that they are preparing the external SWF, as follows:

     function ListenForNavFromExternalAsset(sectionLength:int):void
    {        
        for(var i:int = 0;i<sectionLength;i++)
        {
            var screenNum = '"' + i + '"';
            stage.addEventListener(screenNum, NavToScreenFromExternalAsset, false, 0, true);
            trace(screenNum);
        }
    }
    

    I can see followed by the screen, so I know that the service is running.

    However, clearly, the events are not added to the scene because I never see the traces below, even if the external swf is no doubt sending its events:

    function NavToScreenFromExternalAsset(e:Event):void
    {            
        trace("ADDED_TO_STAGE");
        if(e == Event("1"))
        {
            trace("NavToScreenFromExternalAsset: ONE");
        }
        else if(e == Event("2"))
        {
            trace("NavToScreenFromExternalAsset: TWO");
        }
    //etc..
    }
    

    There must be a better way to do what I'm not aware of, I had a lot of success in the past using dispatchEvent and capture the event, but I don't know how to dynamically create headphones and listen to a dynamic channel.

    If anyone can suggest a way forward, I would be much obliged.

    Thx for reading,

    ~ Chipleh

    Hi Ned,.

    Thank you very much for the reply and oooh, it looks nice, I'll put it in my Pocket Flash for future use.

    After a lot of writing and rewriting and realize (as usual) I was overloading the question, I came up with it, that solved my problem:

    In one of my functions running, I create the number in which I want to listen to

    Add it to the event listener

    for (var i: int = 0; i<>

    {

    var thisScreen:String = String (i + 1); ([/ /, false, false, 1]);

    addEventListener (thisScreen, NavToScreenFromExternalAsset, true);

    }

    Then in the event listener, I get the event type, apply it to my screenCount variable,

    my function call and I'm good to go

    function NavToScreenFromExternalAsset(e:Event):void

    {

    screenCount = int (e.type) - 1;

    DisplayLessonScreenContent();

    }

    However, that being said, the custom event class that you posted is much more elegant, where the solution is just a simple hack. Anyway, thanks for your message of Ned and a lot of satisfaction to you, my friend.

    ~ Chipleh

  • Dynamically create and assess controls.

    I have an ArrayCollection collection in my application that I use to dynamically create controls for.  Each row of the table must create four controls.  The following code is what I used to create the items.  Problem is that I don't know how to evaluate when the time comes to deal with the values entered in each control.

    for (i = 0; i < model.) BudgetDetails.length; i++){
    If (i > 0) {}
    offset = offset + 25;
    }

    var TmpName1:Label = new Sun;
    TmpName1.text = modΦle. BudgetDetails [i]. BudgetCategory;
    TmpName1.name = "Label" + i;
    TmpName1.x = 5;
    TmpName1.y = offset + 6;
    TmpName1.width = 200;
    TmpName1.styleName = "LabelRightAlign";
    addElement (TmpName1);

    var TmpName2:TextInput = new TextInput();
    TmpName2.text = modΦle. BudgetDetails [i]. BudDesc;
    TmpName2.name = "Input_BudDesc" + i;
    TmpName2.x = 215;
    TmpName2.y = offset;
    TmpName2.width = 200;
    TmpName2.styleName = "TextInput_Desc";
    addElement (TmpName2);

    etc...

    }

    It works very well to create the controls, but I don't know how to loop through the controls to find the values entered into the TextInput controls.  I have to either assign names to controls before I create or I need to know how a loop on all of the items on my page.

    Well, it is not the most elegant solution out there, but it does not work...

    Code to delete the dynamically created controls *.

    var MyNumElements:int = numElements;          numElements decreases every time you delete an element

    var x: Object;

    var CurrentElement:int = 0;                              elements becomes the they are deleted

    for (i = 0; i< mynumelements;="">

    x = getElementAt (CurrentElement);

    TMPNAME = x.name;

    TMPNAME = tmpname.substring (0, 5);

    If (tmpname == 'Label' | tmpname == "Input") {}

    removeElementAt (CurrentElement);

    } else {}

    CurrentElement = CurrentElement + 1;

    }

    }

    Enter code to inspect the text controls *.

    for (i = 0; i< numelements;="">

    x = getElementAt (i);

    TMPNAME = x.name;

    TMPNAME = tmpname.substring (0, 5);

    If (tmpname == "Input") {}

    DoMyStuffHere

    }

    }

    Deletion of items was a little complicated numElements declines because by one whenever you remove an item that mess up your loop counter.  Also items get becomes the they are deleted.  Please also make sure that all THE OTHER ELEMENTS on your form are not named with the same string as the most dynamic. In my case, I named everything with Labelxxx or Input_xxx if all the other names had ti be assigned.  For example, I had a few other labels in my module so I had to name them.  Oh... an id is not the same as a name either!  (learned that the hard way...)

    If you have any suggestions on how to make code that dynamically adds, removes or inspects more elegant controls, please let me know!

  • Dynamically create the input text element

    Hello

    I'm trying to dynamically create a text entry and add it to the Table

    but I'm having some problem with createWebBean method we can invoke it.

    Please help thanks
    import oracle.apps.fnd.framework.webui.OAPageContext;
    import oracle.apps.fnd.framework.webui.OAWebBeanConstants;
    import oracle.apps.fnd.framework.webui.beans.OAWebBean;
    import oracle.apps.fnd.framework.webui.beans.message.OAMessageLovInputBean;
    import oracle.apps.fnd.framework.webui.beans.message.OAMessageTextInputBean;
    import oracle.apps.fnd.framework.webui.beans.table.OATableBean;
    import oracle.apps.pa.ci.webui.PaSupplierImplementCO;
    import oracle.apps.pa.util.webui.Debug;
    
     public class xxpaPaSupplierImplementCO extends PaSupplierImplementCO {
    
        public void processRequest(OAPageContext paramOAPageContext,OAWebBean paramOAWebBean) {
            
            super.processRequest(paramOAPageContext, paramOAWebBean);
            xxpaProcessRequest(paramOAPageContext, paramOAWebBean);
        }
        public void xxpaProcessRequest(OAPageContext paramOAPageContext,OAWebBean paramOAWebBean) {
            
            super.processRequest(paramOAPageContext, paramOAWebBean);
            print_log("Start processRequest",paramOAPageContext);
            
            OATableBean localOATableBean = (OATableBean)paramOAWebBean.findIndexedChildRecursive("SupplierTable");
            if (localOATableBean != null){
               OAMessageTextInputBean xxPaPOQuantityBy = (OAMessageTextInputBean)createWebBean(paramOAWebBean,OAWebBeanConstants.MESSAGE_TEXT_INPUT_BEAN,null,"xxPaPOQuantityBy");
               OAMessageTextInputBean xxPaPOQuantityBy1 = (OAMessageTextInputBean)createWebBean(paramOAWebBean,MESSAGE_TEXT_INPUT_BEAN,null,"xxPaPOQuantityBy");
               xxPaPOQuantityBy.setPrompt("Change Quantity By");
               xxPaPOQuantityBy.setMaximumLength(10);
               localOATableBean.addIndexedChild(xxPaPOQuantityBy);
               print_log("PO QTY ADDED ot Supplier Table",paramOAPageContext);
            }
             
            print_log("End processRequest",paramOAPageContext);
        }
    
    }

    Hello

    Try with:

    OAMessageStyledTextBean oamessagestyledtextbean is createWebBean (OAMessageStyledTextBean) (oapagecontext, "MESSAGE_TEXT", null);.

    Concerning
    Meher Irk

  • Access dynamically created movieclips

    I have an application that I add movieclips to a movieclip container through a loop and repeatedly by calling myClip.addChild (theNewClip). Now I have a dozen of clips in my container and it seems that the only way to access the item is to use the getChildByName() method and run it in a temporary clip, so I can get to the properties.

    What is the best or only way to do this? The old AS2 myContainer ["theName"] .property does not work with dynamically created movieclips? It doesn't seem to work for me.

    In any case, I now get the clips, but I was hoping that someone could show me a better way to access a clip created dynamically.

    OK Yes im a dumass.

    You can just say container.getChildByName("theName").x;

    Do not consider this post lol.

  • &amp; quot; Lock &amp; quot; dataProvider when creating tables and DataGrids in loop

    I'm a loop in each element in an array and for each item, I try to create a new DataGrid on a new canvas and add each canvas of a ViewStack.

    I'm having problems in setting the dataProvider for the DataGrids. As part of the loop, I create a new ArrayCollection collection to serve the created for the latest DataGrid dataProvider. But since the loop uses a single ArrayCollection variable collection iterates the loop every time a new ArrayCollection collection is created, and created DataGrids dataProviders previously point to the new collection of ArrayCollection, rather than one that was created during the iteration. For example, I can end up with 10 DataGrids (on 10 paintings) in the ViewStack and all their dataProviders will point to the latest collection created ArrayCollection, rather than the collection created ArrayCollection in the same iteration of the loop that created this respective DataGrid.

    Is there a way to take a "cliché" (for lack of better terms) static of an ArrayCollection collection in each iteration and use it as the dataProvider for the newly created in this same iteration DataGrid? Any help or insight is appreciated.

    I think that I fixed it. Moving var dgArray:ArrayCollection; above dgArray = new ArrayCollection collection; seems to have done the trick and logical sense.

  • When dynamically created variables are emptied in the sequential process template?

    I have a sequence TestStand 2014 in which I dynamically create and fill many FileGlobal variables in the installation section of my main sequence.  I have it using the TestStand API to read the data in an Excel file (the data consists mainly of thresholds, limits, etc.).  The methodology itself works flawlessy.

    However, there are differences in behavior when using entry points both execution of the sequential process model.  When you use the entry point of execution 'Single Pass', he has no problem in test a DUT after another.  However, when you use the entry point for execution "Test DUT", I encounter the following error after completing of DUT1 and DUT2 testing:

    An error occurred the call 'InsertSubProperty' in 'PropertyObject' of 'NI TestStand 2014 API.

    The name of the element "VariableName" is not valid because it is already in use.

    I interpret this error message means that the variable I am trying to dynamically create the DUT2 track is already present race of DUT1.  I have a few questions about this:

    1. at what point in the sequential process template are dynamically created variables flushed, such as run a further by using 'Single Pass' starts with a clean slate?

    2. is there a reminder that I can substitute such as variables to rinse after each HAD run, allowing me to dynamically create variables on each HAD, during execution using "Test UUT?

    3. better yet, is there a counter of TestStand I can query to determine if I already ran DUT1 when using "Test DUT", such as DUT2 uses the variables that were created dynamically on trail of DUT1?

    Or you can simply use the PropertyExists function as a precondition.

    PropertyExists ("Locals.Foo")

  • How to dynamically create variables of StationGlobals who are LabVIEWIOControl

    I'm looking for a way to dynamically create variables StationGlobals LabVIEWIOControl.  I know not how to create variables through "PropertyObject/SetValXXX", however I have some difficualty create variables that are custom data types.

    Thank you

    Bryon

    Bryon,

    You can use an expression as follows:

    StationGlobals.NewSubProperty("MyVariable",PropValType_NamedType,False,"LabVIEWIOControl",0)

    I hope this helps!

  • dynamically create and destroy the custom menu item

    I have a standard TestStand platform that I use on multiple systems.  On some systems, I have a few sequences of calibration and I would like to have the Update menu to have the RunSequence of these sequences of calibration.  I know how to manually create these menu items, but they are no longer valid for some sequence files.  I would use the sequence SequenceFileLoad to dynamically create menu items and the SequenceFileUnload to destroy these menu items.

    I've played around with the API, but cannot determine the correct path to get to the create and destroy the custom menu items.  Does anyone know how this can be done?

    Thank you

    Matthew

    Yes, see the online help for the members of the following APIs:

    Engine.GetEditTimeToolMenuItems

    EditTimeMenuItems

    EditTimeMenuItem

    Basically, you get a collection of tool using Engine.GetEditTimeToolMenuItems () menu items and then call EditTimeMenuItems.Insert () or EditTimeMenuItems.Remove (). If you insert a you get returns an EditTimeMenuItem object on which you can change the settings.

    In addition, since it has an expression to hide items in menu tool, you need not necessarily to destroy, you can hide them instead.

    Hope this helps,

    -Doug

Maybe you are looking for