演示了事件、工具条及菜单、各式各样的按钮。请任意输入、点击按钮,感受控件所触发的页面事件:
ID: 值: 文字串:
选中行的整行内容(客户、城市的下拉Treelist):

如果您关心工具条,也可以考虑使用 Toolbar 对象,使用更为简单:




1.可查看创建上面的 Freeform 的XML描述文件freeform4.xml、下面工具条的XML描述文件freeform41.xmlfreeform42.xml
2.在XML中,图片资源都在buttons.zip中,请注意硕正对图片的扩展URL的支持;
3.请分析源码:
var countForFirefox=0;

function OnReady(id)
{
 cooper(id);
}
function onLoadPage( )
{
 if($B.type == "firefox") cooper('');
}
function cooper(id)
{
 if($B.type == "firefox") {
  countForFirefox++;
  if(countForFirefox != 4) return;
  id='';
 }
 if(id == 'AF' || id=='') {
  AF.func("Build", "treelist/freeform4.xml");
 }
 if(id == 'AF2' || id=='') {
  AF2.func("Build", "treelist/freeform41.xml");
  AF2.func("SetMenuItemProp", "menu1 \r\n 103 \r\n enable \r\n false");
 }
 if(id == 'AF3' || id=='') {
  AF3.func("Build", "treelist/freeform42.xml");
 }
}

//所有事件全部在这里:
function OnEvent(id, Event, p1, p2, p3, p4)
{
 var obj1 = document.getElementById('lb1');
 var obj2 = document.getElementById('lb2');
 var obj3 = document.getElementById('lb3');
 var obj4 = document.getElementById('lb4');
 if( Event == "EditChanged" || Event == "ButtonClicked" ) { //来自输入Edit、按钮
  obj1.innerHTML = p1 + (Event == "ButtonClicked" ? " (按钮)":"");
  obj2.innerHTML = AF.func("getValue", p1);	//值
  obj3.innerHTML = AF.func("getText", p1);	//显示串
  obj4.innerHTML = "";
  //可能是下拉Treelist
  var handle = AF.func("GetHandle", p1);	//取得下拉Treelist的句柄
  if(handle!="") obj4.innerHTML = getRowInfo(handle);
 }
 else if( Event == "MenuClicked") {	//来自菜单的消息
  obj1.innerHTML = p1;	//菜单项的ID号
  obj2.innerHTML = "";
  obj3.innerHTML = "";
  obj4.innerHTML = "";
 }
}

//js函数:显示下拉的整行内容,注意Treelist扩展函数的用法
function getRowInfo(handle)
{
 var Text="";
 var row  = AF.func(handle + "GetCurrentRow", "");
 var sCol = AF.func(handle + "GetNextValidCol", "");
 for(; sCol!=""; sCol=AF.func(handle + "GetNextValidCol", sCol)) {
  Text += AF.func(handle + "GetCellData", row + "\r\n" + sCol);
  Text +=", ";
 }
 return Text;
}
4.在下面的工具条例子中,用到了 Toolbar 对象;
<Toolbar id="tool1" menuId="menu1" width="9"/>
Toolbar 对象的优点是使用简单,您不必一个个加按钮;缺点是背景固定的,缺少可配置性,因为它是直接从操作系统的工具条继承过来的.