winform实现sliding bar滑动界面
By
admin
at 2018-09-09 • 0人收藏 • 1348人看过
目前,
有两种方式:
1,考虑有两个custom界面,分别调用不同的子界面,初始化的时候界面A显示整个界面,界面B显示界面的最左边部分。 当点击右边B界面的时候,右边B界面展开,左边A界面收缩只显示右边部分界面。依次类推
2,用四个form子界面,两个custom实现.。初始化的时候,左边显示的是大界面A,右边显示小界面B , 点击小界面B之后,左侧开始收缩,显示小界面A,右侧展开,显示大界面B,依次类推。
3 个回复 | 最后更新于 2018-09-10
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();
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();
登录后方可回帖
优缺点:
第一种方式,要求界面AB的左右方要一致,而且必须是右侧固定边距。这个写的时候就不是很灵活。
第二种方式,四个界面可以分别做, 想要显示什么就写什么,不用去可以调整界面。但是实现滑动收缩和展开还要切换界面估计会闪烁。