1.可查看创建上面的 Freeform 的XML描述文件freeform4.xml、下面工具条的XML描述文件freeform41.xml、 freeform42.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 对象的优点是使用简单,您不必一个个加按钮;缺点是背景固定的,缺少可配置性,因为它是直接从操作系统的工具条继承过来的.
|