修改默认的tabs高级选项卡项的close标签功能
By
admin
at 2018-05-09 • 1人收藏 • 1861人看过
去win.ui.tabs库里面可以看到
this.closeButton.oncommand = function(){
if( this.closeButton.hoverStrip) {
this.deleteByStrip(this.closeButton.hoverStrip);
this.closeButton.hoverStrip = null;
};
this.closeButton.hide = true;
}上面就是原来的close按键功能,如果我们想要在项目中修改这个功能的话,我们可以直接引用这个函数,然后在函数里修改,如果只是增加功能,那么可以在函数的下面添加即可:
//修改默认的选项卡关闭按钮功能
headTabs.closeButton.oncommand = function(){
if( headTabs.closeButton.hoverStrip) {
headTabs.deleteByStrip(headTabs.closeButton.hoverStrip);
headTabs.closeButton.hoverStrip = null;
};
headTabs.closeButton.hide = true;
//上面的代码未动,只是修改了里面的this为实例对象
//下面增加:动态修改添加按钮位置
var x,y,cx,cy = headTabs.strips[#headTabs.strips].getPos();
mainForm.plus.setPos(x+cx+2,y);
}
完整工程main.aardio如下:
import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio form";right=1097;bottom=605;bgcolor=8421376;border="dialog frame")
mainForm.add(
custom={cls="custom";text="custom";left=0;top=35;right=1098;bottom=606;bgcolor=16777215;z=4};
plus={cls="plus";text="+";left=236;top=1;right=266;bottom=36;bgcolor=128;color=16777215;font=LOGFONT(h=-21);notify=1;z=3};
plus2={cls="plus";text="TestA";left=0;top=0;right=116;bottom=35;bgcolor=8388736;color=16777215;font=LOGFONT(h=-21);z=1};
plus3={cls="plus";text="TestB";left=119;top=1;right=235;bottom=36;bgcolor=8388736;color=16777215;font=LOGFONT(h=-21);z=2}
)
/*}}*/
import win.ui.tabs;
var headTabs = win.ui.tabs(mainForm.plus2,mainForm.plus3);
headTabs.skin(
background = {
hover = 0xFFC000C0;
default = 0xFF800080;
};
color = {
default = 0xFFffffff;
hover = 0xFFffffff;
}
checked = {
background = {
hover = 0xFFffffff;
default = 0xFFffffff;
};
color = {
default = 0xFF000000;
hover = 0xFF000000;
}
}
)
headTabs.clear();
headTabs.margin = 5;
headTabs.add({
text="TestA";
hasCloseButton = true;
},"\res\TestA.aardio")
headTabs.add({
text="TestB";
hasCloseButton = true;
},"\res\TestB.aardio")
headTabs.add({
text="TestC";
hasCloseButton = true;
})
headTabs.add({
text="TestD";
hasCloseButton = true;
})
headTabs.selIndex = 1;
var x,y,cx,cy = headTabs.strips[#headTabs.strips].getPos();
mainForm.plus.setPos(x+cx+2,y);
//修改默认的选项卡关闭按钮功能
headTabs.closeButton.oncommand = function(){
if( headTabs.closeButton.hoverStrip) {
headTabs.deleteByStrip(headTabs.closeButton.hoverStrip);
headTabs.closeButton.hoverStrip = null;
};
headTabs.closeButton.hide = true;
var x,y,cx,cy = headTabs.strips[#headTabs.strips].getPos();
mainForm.plus.setPos(x+cx+2,y);
}
mainForm.plus.oncommand = function(id,event){
var x,y,cx,cy = headTabs.strips[#headTabs.strips].getPos();
if((mainForm.width-cx) <= (x+cx)){
mainForm.msgbox("超出界面了!")
//mainForm.plus.hide = true;
return;
}
headTabs.add({
text="NewPage";
hasCloseButton = true;
})
var x,y,cx,cy = headTabs.strips[#headTabs.strips].getPos();
mainForm.plus.setPos(x+cx+2,y);
}
mainForm.onMouseDown = function(wParam,lParam){
mainForm.hitCaption();
}
mainForm.enableDpiScaling();
mainForm.show();
return win.loopMessage();
1 个回复 | 最后更新于 2018-11-21
登录后方可回帖
完整的工程:
import win.ui; /*DSG{{*/ mainForm = win.form(text="popdes第一阶段作业";right=1097;bottom=610;bgcolor=8421376) mainForm.add( custom={cls="custom";text="custom";left=0;top=35;right=1098;bottom=606;bgcolor=16777215;db=1;dl=1;dr=1;dt=1;z=4}; plus={cls="plus";text="+";left=236;top=1;right=266;bottom=36;bgcolor=128;color=16777215;dl=1;dt=1;font=LOGFONT(h=-21);notify=1;z=3}; plus2={cls="plus";text="TestA";left=0;top=0;right=116;bottom=35;bgcolor=8388736;color=16777215;dl=1;dt=1;font=LOGFONT(h=-21);z=1}; plus3={cls="plus";text="TestB";left=119;top=1;right=235;bottom=36;bgcolor=8388736;color=16777215;dl=1;dt=1;font=LOGFONT(h=-21);z=2} ) /*}}*/ import win.ui.tabs; import Mylib; var headTabs = win.ui.tabs(mainForm.plus2,mainForm.plus3); headTabs.skin( Mylib.tabsSkin ); headTabs.clear(); headTabs.margin = 5; 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") headTabs.selIndex = 1; headTabs.adjust = function(){ var x,y,cx,cy = owner.getPos(); mainForm.plus.setPos(x+cx+2,y); } headTabs.adjust(); //修改默认的选项卡关闭按钮功能 headTabs.closeButton.oncommand = function(){ if( headTabs.closeButton.hoverStrip) { headTabs.deleteByStrip(headTabs.closeButton.hoverStrip); headTabs.closeButton.hoverStrip = null; }; headTabs.closeButton.hide = true; //每次关闭选项卡后让那个+号自适应 headTabs.adjust(); } 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; headTabs.forms[#headTabs.strips].openUrl(retStr); var x,y,cx,cy = headTabs.getPos(); mainForm.plus.setPos(x+cx+2,y); }else { mainForm.msgbox("请输入网址以 http:// 开头!") } } } mainForm.onMouseDown = function(wParam,lParam){ mainForm.hitCaption(); } //全局访问中转站 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名称错误!"; } } mainForm.enableDpiScaling(); mainForm.show(); return win.loopMessage();