高级选项卡( tab plus )。
高级选项卡并不是一个控件,而是用于管理一组 plus 控件( win.ui.ctrl.plus )以实现选项卡效果的管理组件。
创建高级选项卡( tab plus )。
自动查找附近合适的 custom 控件作为页面容器。
优先选择未禁用、未隐藏、未设置透明的 custom 控件。
如果是水平选项卡,应在下侧放置 custom 控件作为页面容器,
如果是垂直选项卡,应在右侧放置 custom 控件作为页面容器。
为了避免在启动软件时一次性加载大量子窗口导致启动速度慢,
为每一个选项卡添加子窗口时,win.ui.tabs 默认会创建并返回伪窗口。
直到点击该选项卡或访问伪窗口的属性与方法(fake 属性除外)时才会真正初始化相应的子窗口
win.ui.tabs.defaultStyle = {
foreground={
active=0xFFFFFFFF;
default=0x00FFFFFF;
hover=0x38FFFFFF
};
color = {
default=0xFFFFFFFF;
};
checked={
foreground={default=0xFFFFFFFF;};
color={default=0xFF42A875;};/*默认选项卡样式*/
}
}
win.ui.tabs.dropButtonStyle = {
color = {
hover = 0xff99ffcc;
active = 0xffff6666;
default = 0xffffffff;
}/*选项卡下拉按钮默认样式*/
}
创建高级选项卡。
参数必须指定至少2个已创建的 plus 控件模板,对象创建成功可选清除模板
如果不需要动态增删选项卡,参数中的 plus 控件无需保持均匀间隔,
动态增加选项卡时会根据模板控件的样式与位置,
自动分析是水平排列还是垂直排列,自动分析排列间距,
并动态添加选项卡,可选显示删除选项卡的按钮
添加的选项卡数目超出显示范围时可自动折叠到下拉菜单,
自动折叠功能会保证新增选项卡、当前选项卡位于可见位置,
这会导致选项卡在必要时自动调整位置,
所以同一索引并不一定指向同一选项卡
winUiTabsObject.add({
text="标题文本";
iconText='\uF0AD';
foreground="\res\images\icon.png";
hasCloseButton=true;/*添加选项卡按钮 - 使用plus控件创建,
参数@1可以指定部分创建 plus 控件的参数,未指定的参数自动补全,
text字段可用于指定显示文本,foreground 字段可用于指定前景图标
如果指定 hasCloseButton 为 true,鼠标悬停会显示关闭按钮,
参数@1也可以使用一个数组指定创建多个选项卡的选项
如果存在多个参数,
自参数 @2 开始作为 loadForm 函数的参数加载窗体并绑定当前选项卡
此函数成功返回新增的选项卡索引,注意如果超出显示范围,
新增选项卡会自动替换到可显示位置*/
})
参数@option指定一个数组,
遍历数组中的项并作为参数调用add函数创建多个选项卡,
参数为null或空数组时忽略不执行任何操作
winUiTabsObject.adjust = function(){
var x,y,cx,cy = owner.getPos();
/*选项卡已重新调整布局*/
}
调整布局
高级选项卡会在需要的时候自动调用此函数
winUiTabsObject.beforeShowCloseButton = function(tab,rcTab,rcCloseButton){
/*返回关闭按钮显示的x,y坐标,需要返回2个值
不返回值取消显示
参数 tab 为请求显示关闭按钮的选项卡
rcTab为选项卡所在的区块,::RECT对象,
rcCloseButton为关闭按钮所在的的区块,::RECT对象
dpiScaleX,dpiScaleY为X,Y轴上的DPI缩放比例,1表示100%*/
}
清空所有选项卡、清空所有加载的子窗口
选项卡上关闭按钮,plus控件
可调用skin函数自定义外观样式
可通过beforeShowCloseButton事件自定义显示坐标
注意这是一个orphanWindow浮动窗口
返回选项卡总数
此函数与add函数用法相同
但创建选项卡以后会同时创建对应的子窗口,
返回2个值,分别为创建的选项卡对象、子窗体对象
注意,调用add,create函数添加选项卡,
如果超出可见范围,会自动折叠其他选项卡,并将新增的选项卡移动到可见位置
所以增加选项卡可能导致选项卡调整位置,索引发生变化
删除指定索引的选项卡
参数用数值指定选项所在位置索引
删除指定的选项卡
参数指定相同索引位置的子窗体对象
删除指定的选项卡
参数指定选项卡按钮对象
下拉菜单按钮,
如果存在超出显示范围的选项卡,这个控件会自动显示
这是一个plus控件对象
下拉菜单按钮边距
for(tab,form,idx in winUiTabsObject.each() ){
/*遍历所有选项卡,
tab 为选项卡对象,form为对应的子窗口,idx为索引位置
遍历时不应当执行删除、新增选项卡,设置当前选项卡等改变索引位置的操作*/
}
返回x,y,cx,cy等4个值,
分别表示高级选项卡当前左,上坐标,宽度,高度
参数指定屏幕坐标,返回该坐标所在的选项卡,以及选项索引
获取子窗口所在的选项卡索引位置
参数指定相同索引位置的子窗体对象
获取选项卡所在的索引位置
参数指定选项卡按钮对象
初始化为弹出菜单样式
@handleCtrl指定接收输入事件的控件,
自动修改该控件的checked属性为是否弹出状态,
transparent指定菜单是否透明,
所有参数可选
选项卡是否可见
选项卡间隔距离,可以为负数
是否保持选项之间的间距不变,
该属性建议由aardio自动设置
最后一个显示状态的选项卡索引
在这后面是因为超出显示范围被自动隐藏的选项卡
最后一个显示状态的选项卡
在这后面是因为超出显示范围被自动隐藏的选项卡
这是一个plus控件对象
加载窗体到高级选项卡的页面容器控件,并绑定选项卡。
选项卡必须已经匹配到可用的页面容器,
也就是说 panel 属性不为空值。
高级选项卡默认会自动查找附近合适的 custom 控件作为页面容器
也可以手动指定 panel 指向的窗口
loadForm 函数默认会加载延迟创建实际窗口的伪窗口。
访问伪窗口的任何属性或方法都会自动创建真实窗口。
在页面容器控件创建默认子窗体并绑定到最后一个选项卡。
返回创建的子窗口对象。
在页面容器控件创建默认子窗体并绑定到指定的选项卡。
数 @index 指定索引,可用负索引表示倒计数,-1 表示最后一个选项卡。
如果不指定索引则默认取 forms 属性的数组长度并加 1 作为索引。
与其他函数同的是:此函数省略参数 @1 可不用占位,允许参数 @2 写为 参数 @1。
省略参数 @2 则立即创建默认子窗体并加载到页面,然后返回该窗体。
在页面容器控件内预加载创建子窗体的代码文件,
并绑定到参数 @index 指定索引的选项卡。
参数 @index 可用负索引表示倒计数,-1 表示最后一个选项卡。
在开发环境中,请注意保存外部窗体文件以后测试运行。
默认会创建并返回一个伪窗口对象,
并延迟到用户切换到所属选项卡时才会真正创建窗口。
访问伪窗口除 fake 以外的任何属性方法也会立即创建窗口。
在页面容器控件内创建子窗体并绑定到参数@1指定索引的选项卡。
参数 @index 可用负索引表示倒计数,-1 表示最后一个选项卡。
默认会创建并返回一个伪窗口对象,
并延迟到用户切换到所属选项卡时才会真正创建窗口。
访问伪窗口除 fake 以外的任何属性方法也会立即创建窗口。
将 @winform 指定的子窗体添加到页面容器,
并绑定到参数 @index 指定索引的选项卡。
参数 @index 可用负索引表示倒计数,-1 表示最后一个选项卡。
如果不指定索引(可省略参数占位)则默认取 forms 属性的数组长度并加 1 作为索引。
返回参数 @2 指定的窗体对象。
可设置选项卡按钮尾部最少预留的边距,
超出显示范围时自动折叠选项卡并在此显示下拉菜单,
默认会根据下拉按钮的大小自动设置此值,
如果设置为0则禁用自动折叠功能。
此属性应设置为系统 DPI 缩放前的原始值
切换到下一个
winUiTabsObject.onCancel = function(){
/*用户关闭弹出列表并且未确认选项*/
}
winUiTabsObject.onDrawEnd = function(graphics,rc){
/*所有绘制操作结束触发此事件,
graphics 为gdip.graphics对象(GDI+画板),
rc为客户区RECT结构体*/
}
winUiTabsObject.onDrawForegroundEnd = function(graphics,rc,rcContent){
/*背景前景绘制后,绘制文本前触发此事件,
graphics 为gdip.graphics对象(GDI+画板),
rc为客户区RECT结构体,rcContent为去掉内边距后的RECT结构体*/
}
winUiTabsObject.onDrawString(...onDrawString = function(graphics,text,font,rectf,strformat,brush){
graphics.drawString(text,font,rectf,strformat,brush);
/*自绘所有选项卡控钮上的文本
注意owner参数指向当前选项卡按钮*/
}
winUiTabsObject.onFocusGot = function(hLostFocus){
..win.setFocus(hLostFocus);/*得到焦点触发此事件,hLostFocus为失去焦点的窗口句柄*/
}
winUiTabsObject.onFocusLost = function(hFocus){
/*失去焦点触发此事件,hFocus为得到焦点的窗口句柄*/
}
winUiTabsObject.onMouseDown = function(tab,wParam,lParam){
/*在选项卡对象 tab 上按下鼠标,即将切换当前选项卡,
wParam,lParam为窗口消息参数*/
}
winUiTabsObject.onMouseHover = function(tab,wParam,lParam){
/*鼠标正悬浮于选项卡对象 tab 之上,
wParam,lParam为窗口消息参数*/
}
winUiTabsObject.onMouseLeave = function(tab,wParam,lParam){
/*鼠标离开选项卡对象 tab,
wParam,lParam为窗口消息参数*/
}
winUiTabsObject.onMouseLeave = function(tab,wParam,lParam){
/*鼠标离开选项卡对象 tab,
wParam,lParam为窗口消息参数*/
}
winUiTabsObject.onMouseUp = function(tab,wParam,lParam){
/*在选项卡对象 tab 上放开鼠标,选项卡切换操作已完成,
wParam,lParam为窗口消息参数*/
}
winUiTabsObject.onOk = function(tab){
/*用户在弹出列表中选择并确认选项,且即将关闭弹出列表*/
}
winUiTabsObject.onPopup = function(showing){
/*弹出状态变更时触发此事件
弹出状态@showing参数为true,显示为弹出状态@showing参数为false*/
}
winUiTabsObject.onSelchange = function(idx,tab,form){
/*切换选项卡会触发此事件,idx为当前选中索引
tab 为当前选项卡,form为当前子窗口*/
}
winUiTabsObject.onVisualStateChanged = function(showing){
/*显示或隐藏时触发此事件
显示@showing参数为true,隐藏@showing参数为false*/
}
winUiTabsObject.oncommand = function(tab,id,event){
/*点击选项卡触发此函数
tab 为触发事件的选项卡
id为控件id,event目前值总是0*/
}
用于构成选项卡内容区域( tab body area )的容器控件。
必须是一个 custom 控件(win.ui.ctrl.custom 控件)。
创建高级选项卡时,panel 属性会自动指定为附近可用的 custom 控件。
也可以在加载子窗口以前手工指定此对象
切换到弹出列表模式,
用于显示简单的弹出列表或菜单,
如果当前项目列表数组为空,则无论传入什么参数都会切换到隐藏状态
隐藏列表,并将selIndex置为null
如果当前项目列表数组为空,则无论传入什么参数都会切换到隐藏状态
弹出列表
ctrl指定控件,弹出列表显示在该控件边上,
自动修改该控件的checked属性为是否弹出状态,
可选使用mode参数指定"up","down","left","right"等显示位置
弹出列表
可选使用x,y指定列表左上角在屏幕上的坐标
切换到上一个
winUiTabsObject.query(
text = "标题";
tabsName = "名字";/*使用选项卡的指定属性查询对应的子窗口,
如果子窗口没有加载将会立即加载,
选项卡的任一属性值与查询条件相同即可
自定义属性建议加上tabs前缀以避免冲突
也可以用一个字符串参数直接查询选项卡标题,
返回窗口对象,以及所在索引*/
)
winUiTabsObject.queryTab(text = "标题"/*使用选项卡的指定属性查询对应的选项卡,
选项卡的任一属性值与查询条件相同即可
自定义属性建议加上tabs前缀以避免冲突
也可以用一个字符串参数直接查询选项卡标题,
返回选项卡对象,以及所在索引*/)
当前选中的子窗口
获取或指定当前选中项索引,设为null清除当前选项,
如果新的选中项已被自动折叠,则会自动移动到可见位置
所以设置selIndex时可能导致selIndex移动位置
获取或指定当前选中的选项卡按钮
指定null或不存在于tabs中的控件时清除选中项,
获取当前选中项文本,
也可以指定一个文本用于切换到显示该文本的选项卡
使用文本数组更新选项卡数组,
此函数可重用已创建的选项卡,所以有更好的性能
使用参数@texts指定的字符串数组创建选项卡数组,
其中的每个字符串用于指定选项卡上的显示文本。
可选用@limit参数指定最大显示条数,
可选用@selIndex参数指定默认选中索引,
此函数返回实际显示条数
使用控件初始化选项数组更新选项卡数组,
此函数可重用已创建的选项卡,所以有更好的性能
使用参数@items指定的选项数组更新选项卡数组,
每个选项提供控件的初始化属性并将被传入add函数。
可选用@limit参数指定最大显示条数,
可选用@selIndex参数指定默认选中索引,
此函数返回实际显示条数
设置所有选项卡的指定属性值
显示或隐藏所有选项卡,可选输入以_SW_为前缀的显示参数
参数@1也可以传入true,false控制是否显示选项卡
参数为true显示下拉菜单按钮
参数为false隐式该按钮
高级选项卡会在需要的时候自动调用此函数
winUiTabsObject.skin({
background = {
hover = "/res/images/button-hover.png";
focus = "/res/images/button-focus.png";
active = "/res/images/button-active.png";
disabled = 0xFFCCCCCC;
};
color = {
hover = 0xF00000FF;/*用格式为0xAARRGGBB的16进制数值,指定鼠标放到控件上的字体颜色,
AA为透明度,RR为红色分量,GG为绿色分量,BB为蓝色分量*/
};
border = {
hover = {left=5;color=0xFFFF0000;padding=15;}
};
})
交换两个索引的选项卡位置
参数a,b应当是有效的选项卡索引
这个函数如果没有弄清楚原理最好不要使用,
高级选项卡会在需要的时候自动调用此函数,
成功返回true,失败返回null
更新选项卡绘图区域,
参数必须是兼容 win.region.png 接口的对象
用于显示页面内容的子窗口数组,
选中的子窗口将在 panel 属性指定的容器控件中显示。
子窗口是 win.form 对象
用于构成选项卡头部区域( tab header area )的选项卡按钮数组。
所有选项卡按钮都是 plus 控件(win.ui.ctrl.plus 控件)。
选项卡按钮数组包含的按钮对象。
所有选项卡按钮都是 plus 控件(win.ui.ctrl.plus 控件)。