winform实现sliding bar滑动界面

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

目前,

有两种方式:

1,考虑有两个custom界面,分别调用不同的子界面,初始化的时候界面A显示整个界面,界面B显示界面的最左边部分。 当点击右边B界面的时候,右边B界面展开,左边A界面收缩只显示右边部分界面。依次类推

2,用四个form子界面,两个custom实现.。初始化的时候,左边显示的是大界面A,右边显示小界面B , 点击小界面B之后,左侧开始收缩,显示小界面A,右侧展开,显示大界面B,依次类推。

3 个回复 | 最后更新于 2018-09-10
2018-09-09   #1

优缺点:

第一种方式,要求界面AB的左右方要一致,而且必须是右侧固定边距。这个写的时候就不是很灵活。

第二种方式,四个界面可以分别做, 想要显示什么就写什么,不用去可以调整界面。但是实现滑动收缩和展开还要切换界面估计会闪烁。

2018-09-09   #2
import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio工程17";right=959;bottom=642)
mainForm.add(
button={cls="button";text="Button";left=174;top=604;right=625;bottom=643;z=3};
custom={cls="custom";text="自定义控件";left=0;top=0;right=193;bottom=592;bgcolor=8421376;db=1;dl=1;dt=1;z=1};
custom2={cls="custom";text="自定义控件";left=192;top=0;right=960;bottom=592;bgcolor=15780518;db=1;dl=1;dr=1;dt=1;z=2}
)
/*}}*/


import console
console.open()
mainForm.button.oncommand = function(id,event){
    console.log(mainForm.custom2.dl)
    //点击一次取消或者设置固定边距
    mainForm.custom2.dl = !mainForm.custom2.dl?1:null;
    //重设大小,这样就会按照调整后的大小移动了
    var x,y,cx,cy =  mainForm.custom2.getPos();
    mainForm.custom2.left = x;
    mainForm.custom2.top = y;
    mainForm.custom2.right = x+cx;
    mainForm.custom2.bottom = y+cy;
    
    
	
}



mainForm.show();
return win.loopMessage();


2018-09-10   #3
import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio工程17";right=949;bottom=642)
mainForm.add(
button={cls="button";text="固定/取消 ";left=0;top=604;right=192;bottom=643;z=3};
button2={cls="button";text="来回翻转";left=291;top=604;right=386;bottom=643;z=4};
custom={cls="custom";text="自定义控件";left=0;top=0;right=750;bottom=592;bgcolor=8421376;db=1;dl=1;dt=1;z=2};
custom2={cls="custom";text="自定义控件";left=200;top=0;right=950;bottom=592;bgcolor=15780518;db=1;dl=1;dr=1;dt=1;z=1}
)
/*}}*/

import console
console.open()

var rePos = function( winform , pos = "left",flag=true ){
    //true->开启,false->关闭
    select(pos) {
    	case "left" {
    		winform.dl = flag?1:null;
    	}
    	case "right" {
    		winform.dr = flag?1:null;
    	}
    	case "top" {
    		winform.dt = flag?1:null;
    	}
    	case "bottom" {
    		winform.db = flag?1:null;
    	}
    }
	
	//重设大小,这样就会按照调整后的大小移动了
    var x,y,cx,cy =  winform.getPos();
    winform.left = x;
    winform.top = y;
    winform.right = x+cx;
    winform.bottom = y+cy;
	
}

var setRightFormPos = function(winform ,width=200 , flag=true/* 右移动 */ ){
    
	winform.setPos( flag?(winform.parent.width-width):width ,0);

	
}



mainForm.button.oncommand = function(id,event){
    console.log(mainForm.custom2.dl)
    rePos(mainForm.custom2,"left",false);
     
        
}
var yyflag = true;
mainForm.button2.oncommand = function(id,event){
    
	setRightFormPos(mainForm.custom2,,yyflag);
	yyflag = !yyflag?true:false;
	
}



mainForm.show();
return win.loopMessage();


登录后方可回帖

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