修改默认的tabs高级选项卡项的close标签功能

By admin at 2018-05-09 • 0人收藏 • 347人看过

去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);	
}

blob.png

完整工程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();


3 个回复 | 最后更新于 2018-11-21
2018-05-10   #1

完整的工程:

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();


2018-11-21   #2

切换选项卡时没有跟新(刷新)窗体

2018-11-21   #3

回复#2 @xxsir :

啥意思?   有完整代码吗? 什么没刷新?  还有就是不要每个相关帖子里都发一遍吧..........

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...