plus模拟收缩导航列实验

By admin at 2019-12-08 • 0人收藏 • 635人看过

纯粹是学习

要实现下面的效果:

GIF.gif

考虑到目前plus增加的menu.popup功能, 感觉可以试下上面的功能, 而且不需要写很多的代码 , 做了下实验, 应该可以封装为一个plus的外置库用, 

还有点瑕疵, 后面慢慢修改, 先上代码 , 有更好的思路的可以留言

import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=409;bottom=551;bgcolor=15780518)
winform.add(
inItem1={cls="plus";text="复制";left=211;top=435;right=409;bottom=464;hide=1;iconStyle={align="left";font=LOGFONT(name='FontAwesome');padding={left=9}};iconText=" ";notify=1;z=1};
inItem2={cls="plus";text="粘贴";left=211;top=464;right=409;bottom=496;hide=1;iconStyle={align="left";font=LOGFONT(name='FontAwesome');padding={left=9}};iconText=" ";notify=1;z=2};
outItem1={cls="plus";text="功能属性";left=78;top=82;right=276;bottom=111;bgcolor=15592941;border={color=-16777216;width=1};iconStyle={align="right";font=LOGFONT(name='FontAwesome');padding={right=10}};iconText='\uF078';notify=1;z=3};
outItem2={cls="plus";text="基本元素";left=78;top=110;right=276;bottom=139;bgcolor=15592941;border={color=-16777216;width=1};iconStyle={align="right";font=LOGFONT(name='FontAwesome');padding={right=10}};iconText='\uF078';notify=1;z=4}
)
/*}}*/

import console
console.open()
 
import win.ui.tabs;
var outmenu = win.ui.tabs(winform.outItem1,winform.outItem2); 
var outTheme = {
    background={
        default = 0xFFEDEDED;
        hover= 0xFFF3F3F3;
    }; 
    checked = { 
        background={
        	default = 0xFFEDEDED;
        	hover= 0xFFF3F3F3;
    	};
        iconText = '\uF077';  
    } 
};
outmenu.skin(outTheme);
 
outmenu.add({
    text='开发工具'; 
})
outmenu.add({
    text='组件示例'; 
})
 
 
var inmenu = win.ui.tabs(winform.inItem1,winform.inItem2)
var inTheme = { 
    color = {
        default = 0xFF06000F;
    }; 
    foreground={
        default = 0xFFFFFFFF;
        hover= 0xFFF7F7F7;
    };
  
    checked = { 
        color = {
            default = 0xFF6A58C9;
        }; 
        foreground={
            default = 0xFFFAFAFA;
        };
    }
};
inmenu.skin(inTheme);
//清空,只留样式
inmenu.clear(); 
inmenu.initPopup();
 
outmenu.oncommand = function(strip,id,event){
    inmenu.clear();
    //随机条件菜单项
    var num = math.random(0,7);
    if(num!=0){
    	for(i=1;num;1){
    		inmenu.add({
				text= strip.text++"文本"++i;
			})	
    	}
    }
    
    if(strip.checked){
        //有菜单项,则
        if(inmenu.count()) inmenu.popup(true,strip);
    }else {
        if(inmenu.count()) inmenu.popup(false,strip);
    }   
}
 
 
inmenu.onVisualStateChanged = function(showing){
    if(showing){
        var x,y,cx,cy = outmenu.selStrip.getPos();
        var xx,yy,cxx,cyy = inmenu.getPos();
        var ny = y+cy+cyy;
 
        for(i=outmenu.selIndex+1;outmenu.count();1){
            outmenu.strips[i].setPos(x,ny);
            ny += cy-1;
        }
 
    }else { 
        if(outmenu.selIndex){
            var x,y,cx,cy = outmenu.selStrip.getPos();
            var ny = y+cy-1;
            for(i=outmenu.selIndex+1;outmenu.count();1){
                outmenu.strips[i].setPos(x,ny);
                ny += cy-1;
            }
        }
    }
}
 
 
  
winform.show() 
win.loopMessage();


2 个回复 | 最后更新于 2019-12-13
2019-12-13   #1

很不错的效果!,但总感觉哪里有问题

2019-12-13   #2

回复#1 @nod32 :

问题在于1,每次点击都会收缩,2 展开后鼠标被一直caption导致鼠标消息只能在弹出层响应 

上面只是模拟收缩列表, 真正要做到能用,就不能完全用plus来做,可以把plus里面的代码复制出来,保留需要的,重新建个个人库. 

后面有时间再试了.

登录后方可回帖

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