| 1.增加一个输入控件 →； 2.增加一个矩形框 →； 3.增加一幅图 →； 4.增加镜面倒影 →；5.替换背景 →；6.删除工具条背景图 →

1.可查看创建该Freeform的XML描述文件；
2.源码中增删控件的js：

    function add1()	//增加输入控件
    {
     AF.func("AddObject", "input \r\n id=num; LeftText=数量：; x=0; y=200; width=280; color=white; leftSize=160; value=2.00; editmask=#,###.00; datatype=double");
    }
    function add2()	//增加矩形框
    {
     AF.func("AddObject", "rect \r\n x=447; y=87; width=256; height=136; bgcolor=white;");
    }
    function add3()	//增加图片
    {
     AF.func("AddObject", "img \r\n id=img1; x=450; y=90; width=250; height=130; src=treelistdata/3.jpg; ");
    }
    function addmirror() //增加镜面倒影
    {
     AF.func("AddObject", "rect \r\n x=447; y=225; width=256; height=60; thick=0; mirror='offset=-2;alpha=80'");
    }
    function change1() //更改背景
    {
     AF.func("SetProp", "backPicture \r\n res/freeformsh.jpg; alpha=10; arrange=tile; rotate=-33");
     AF.func("SetProp", "bgColor \r\n #444499,#6666bb");
    }
    function delete1() //删除对象
    {
     AF.func("DeleteObject", "bmp1");
     AF.func("DeleteObject", "bmp2");
     AF.func("DeleteObject", "bmp3");
    }

通过上例的分析，你就知道那炫丽的工具条实际上就是几幅图片而已。
3.本例的下拉菜单并没有预先写在XML中，而是临时动态生成的，请看源码中的js：

    function OnEvent(id, Event, p1, p2, p3, p4)
    {
     if( Event == "MenuBeforePopup" ) {
      //动态创建简单的单级菜单
    var s = "id=101; text=菜单项1; icon=treelist/cars.zip#car0.png; \t\
    id=102; text=菜单项2; icon=treelist/cars.zip#car1.png \t\
    id=0; text=-; \t\
    id=103; text=菜单项3; icon=treelist/cars.zip#car2.png; enabled=false\t\
    id=104; text=菜单项4; icon=treelist/cars.zip#car3.png";
      AF.func("SetMenu", p2 +"\r\n"+ s);
      //弹出菜单
      AF.func("PopupMenu", "");
     }
    }