winform实现sliding bar滑动界面
By
admin
at 2018-09-09 • 0人收藏 • 1429人看过
目前,
有两种方式:
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的左右方要一致,而且必须是右侧固定边距。这个写的时候就不是很灵活。
第二种方式,四个界面可以分别做, 想要显示什么就写什么,不用去可以调整界面。但是实现滑动收缩和展开还要切换界面估计会闪烁。