tabs中新增的adjust()和getpos()的使用,tabs选项卡之间函数的相互调用
jacen大人新增的这两个函数,非常的实用。
adjust()是tabs选项卡自适应, 这样如果你新增了或者删除了某一选项卡,就会自动调用这个函数,来达到一些目的,比如:

这个+号,要一直贴边,这个功能可以利用adjust()实现
先定义这个函数要实现的功能:
headTabs.adjust = function(){
var x,y,cx,cy = owner.getPos();
mainForm.plus.setPos(x+cx+2,y);
}
headTabs.adjust();上面的意思是:获取tabs的整个位置信息,x+cx就是整个tabs在maifnorm中的位置,+2之后设置这个【+】号x轴就是这个位置,y轴不变。
设置完成之后,初始化的时候调用一次,以后就可以不管他了,它自己就可以自适应。
批量添加选项卡的代码:这里多谢jacen的指导
headTabs.addStrip = function(title,...){
return headTabs.add({
text=title;
hasCloseButton = true;
},...)
}
headTabs.addStrip("TestA","\res\TestA.aardio")
headTabs.addStrip("TestB","\res\TestB.aardio")
headTabs.addStrip("TestC","\res\TestC.aardio")
headTabs.addStrip("TestD","\res\TestD.aardio")jacen的作业要求:有选项卡界面之间的通信....
第一时间想到的就是winform.func() 这样的,但是选项卡之间应该怎么通信?
两个任意的选项卡貌似只有mainform这个是一致的,其他都是独立的,而且jacen说界面之间不应该相互直接干扰...
那么只好用mainfrom做个中间人,其他人都和它通话,它在转发给通话方,额。貌似效率低点,但是好理解。
定一个中转站:
//全局访问中转站
mainForm.childGlobalFun = function(name,fun){
var curForm,idx = headTabs.query( text = name );
if(curForm){
if(curForm[fun]){
var ret,str = call(curForm[fun]);
return str;
}else {
return "调用函数未找到!";
}
}else {
return "Tabs名称错误!";
}
}name是tabs的选项卡的text名,fun是准备调用那个tabs选项卡里面的函数名。
查找到要调用的选项卡窗体之后,判断存不存在这个函数,如果存在那么就call()调用这个函数,这里要注意call()后先返回是否成功调用标志,后面的才是返回的咱们需要的真实值。
被调用的函数如下:TestA选项卡界面中
winform.ccfun = function(){
return "调用了TestA中的函数成功,并返回了此条信息!123456789";
}调用的使用:TestB选项卡界面中
//调用TestA窗体中的函数
var textStr = mainForm.childGlobalFun("TestA","ccfun");
winform.msgbox(textStr);忘了记录一下那个网址打开的界面的代码:
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=1097;bottom=570;bgcolor=16777215;parent=...)
winform.add()
/*}}*/
//创建web窗体
import web.form;
var wb = web.form( winform, , , ,true/*securityTrusted*/ );
wb.noScriptErr = true;
winform.openUrl = function(url){
wb.go(url)
}
winform.enableDpiScaling();
winform.show();
win.loopMessage();
return winform;登录后方可回帖
编写的过程中,希望点击【+】号直接能够像浏览器一样输入网址,然后自动打开这个网址,这样就更像个浏览器了。。。。
所以我在+号点击事件里添加:
import win.inputBox; var stipWidth = headTabs.strips[1].width; mainForm.plus.oncommand = function(id,event){ var inputForm = win.inputBox(mainForm) var retStr = inputForm.doModal(); //如果有收到数据 if(retStr){ //判断是不是网址 if( string.startWith(retStr,"http://",true) ){ var x,y,cx,cy = headTabs.getPos(); if((mainForm.width-stipWidth) <= (x+cx)){ mainForm.msgbox("超出界面了!") return; } //添加选项卡 headTabs.addStrip("NewPage","\res\default.aardio"); //设置选中这个选项卡(最新即最后一个)显示 headTabs.selIndex = #headTabs.strips; //调用模版界面里面的openurl()函数 headTabs.forms[#headTabs.strips].openUrl(retStr); var x,y,cx,cy = headTabs.getPos(); mainForm.plus.setPos(x+cx+2,y); }else { mainForm.msgbox("请输入网址以 http:// 开头!") } } }这样之后,输入网址,然后就添加了选项卡并且自动打开了网址浏览。