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

By admin at 2018-05-09 • 1人收藏 • 1807人看过

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


1 个回复 | 最后更新于 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();


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...