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;
登录后方可回帖
编写的过程中,希望点击【+】号直接能够像浏览器一样输入网址,然后自动打开这个网址,这样就更像个浏览器了。。。。
所以我在+号点击事件里添加:
这样之后,输入网址,然后就添加了选项卡并且自动打开了网址浏览。