====== Layout Children ====== DroidScript's [[built_in:layouts|Layout]] comes complete with methods ChildToFront and GetChildOrder but some people seem to think it is missing a couple of methods, so I offer these functions in the hope that they may be useful. ===== ChildToBack ===== function childToBack(layt, obj){ if( layt.GetChildOrder( obj ) > 0 ){ layt.RemoveChild(obj); layt.AddChild(obj,0); } } ===== setChildOrder ===== function setChildOrder(layt, obj, order){ var tst = layt.GetChildOrder( obj ); if ((tst >= 0) && (tst != order)){ layt.RemoveChild(obj); layt.AddChild(obj,order); } } ===== getChildren ===== function getChildren(layt){ //takes a layout as an argument var children = []; var obj, order; //loop through all controls for (var id in _map) { obj = _map[id] //check if control is on our layout order = layt.GetChildOrder( obj ); if( order > -1 ) { //got one! //zorder propery wll persist until getChildren called again //or manually overwritten by coder obj.zorder = order; children.push( obj ); } } children.sort(function (a, b) { return a.zorder - b.zorder}); return children; } ===== clearLayout ===== function clearLayout(layt) {   //takes a layout as an argument    var allobjs = app.GetObjects();   var obj, order;    //loop through all controls    for (var id in allobjs)    {        obj = allobjs[id]        //check if control is on our layout        order = layt.GetChildOrder( obj );        if( order > -1 )        {            //got one!            layt.DestroyChild( obj );        }     } }  ===== Sample app ===== This sample shows how to use the childToBack function //Called when application is started. function OnStart() { app.SetOrientation("Portrait"); //Create a layout with objects vertically centered. lay = app.CreateLayout( "Linear", "VCenter,FillXY" ); //Create an absolute layout so we can position objects. layAbs = app.CreateLayout( "Absolute" ); lay.AddChild( layAbs ); //Create first image. img1 = app.CreateImage( null, 0.5, 0.3 ); img1.SetColor("#66000088"); img1.SetOnTouchDown(img_OnTouch); layAbs.AddChild( img1 ); //Create second image. img2 = app.CreateImage( null, 0.5, 0.3 ); img2.SetColor("#66880000"); img2.SetPosition( 0.1,0.1 ); img2.SetOnTouchDown(img_OnTouch); layAbs.AddChild( img2 ); //Create third image in middle img3 = app.CreateImage( null, 0.5, 0.3 ); img3.SetColor("#66008800"); img3.SetPosition( 0.2,0.2 ); img3.SetOnTouchDown(img_OnTouch); layAbs.AddChild( img3,1 ); //Add layout to app. app.AddLayout( lay ); } //Called when user touches image function img_OnTouch(){ childToBack(layAbs, this) } function childToBack(layt, obj){ if( layt.GetChildOrder( obj ) > 0 ){ layt.RemoveChild(obj); layt.AddChild(obj,0); } }