高级选项卡( win.ui.tabs )。
高级选项卡并不是一个控件,而是用于管理一组 plus 控件( win.ui.ctrl.plus )以实现选项卡效果的管理组件。
创建高级选项卡( win.ui.tabs )。
自动查找附近合适的 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 可以用一个表(table)指定部分创建 plus 控件的属性,未指定的属性自动补全,
text 属性可用于指定显示文本,foreground 属性可用于指定前景图标。
如果指定 hasCloseButton 属性为 true,鼠标悬停在选项卡按钮上会显示关闭按钮,
参数 @1 也可以传入一个 plus 按件初始化属性表数组,用于同时创建多个选项卡按钮。
如果存在多个调用参数,
自参数 @2 开始作为 loadForm 的调用参数以执行高级选项卡的 loadForm 方法加载子窗体,并绑定当前选项卡按钮。
此函数成功返回新增的选项卡按钮索引。
如果超出显示范围,新增选项卡按钮会自动替换到最后一个显示位置,
并将被替换的选项卡按钮移入到下拉菜单内。*/
})
参数 @arrayTabPropertiesTable 指定一个属性表数组,
遍历数组中的控件属性表并作为参数调用高级选项卡的 add 方法创建多个选项卡。
调用参数 @arrayTabPropertiesTable 为 null 或空数组时忽略不执行任何操作
winUiTabsObject.adjust = function(){
var x,y,cx,cy = owner.getPos();
/*选项卡已重新调整布局*/
}
调整布局
高级选项卡会在需要的时候自动调用此函数
winUiTabsObject.beforeShowCloseButton = function(tabButton,rcTab,rcCloseButton){
/*返回关闭按钮显示的x,y坐标,需要返回2个值
不返回值取消显示
参数 tabButton 为请求显示关闭按钮的选项卡按钮。
rcTab 为选项卡按钮所在的位置区块,::RECT对象,
rcCloseButton为关闭按钮所在的的区块,::RECT对象
dpiScaleX,dpiScaleY为X,Y轴上的DPI缩放比例,1表示100%*/
}
清空所有选项卡按钮、清空所有加载的子窗口
选项卡按钮上动态显示的关闭按钮,这是一个 plus 控件。
可调用 skin 函数自定义外观样式。
可通过 beforeShowCloseButton 事件自定义显示坐标。
注意这是一个 orphanWindow 浮动窗口。
返回高级选项卡包含的选项总数
此函数与 add 函数用法相同
但创建选项卡以后会同时创建对应的子窗口,
返回 2 个值,分别为创建的选项卡按钮对象、子窗体对象。
注意,调用 add,create 函数添加选项卡按钮,
如果超出可见范围,会自动折叠其他选项卡按钮,并将新增的选项卡按钮移动到可见位置。
所以增加选项卡按钮可能导致选项卡按钮调整位置,选项卡按钮的原索引发生变化
删除指定索引的选项卡按钮。
参数用数值指定选项所在位置索引
删除指定的选项卡按钮。
参数指定相同索引位置的子窗体对象
删除指定的选项卡按钮。
参数指定选项卡按钮对象
是否禁用选项卡。
仅当前选项卡按钮会切换禁用样式,其他选项按钮仅切换是否允许响应事件属性(notify)。
如果尚未指定当前选项,则获取此属性时总是为 false 。
winUiTabsObject.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250'}/*指定文本时,指定为文本或文本数组则禁用当前选项按钮并显示指定文本,
同时也会禁止所有选项卡按钮响应事件(但其他选项卡按钮不显示禁用样式),禁止切换选项。
此属性指定为一个文本数组时,当前选项卡按钮将创建动画逐帧显示数组里的文字图标。
如果当前选项卡按钮配置了图标文本则使用图标文本( iconText )显示数组内的文字图标,
此属性指定为 null 时,启用当前选项,并恢复控禁用之前的 text、iconText 属性。
同时其他所有选项卡按钮也会切换到允许响应事件(notify 属性恢复为 true )。
如果尚未指定当前选项,则获取此属性时总是为 null。*/
下拉菜单按钮。
如果存在超出显示范围的选项卡按钮,这个 dropButton 控件会自动显示。
dropButton 是一个 plus 控件对象。
下拉菜单按钮边距
for(tabButton,formPage,tabIndex in winUiTabsObject.each() ){
/*遍历高级选项卡的所有选项。
tabButton 为当前选项卡按钮,formPage 为对应的子窗口,tabIndex 为索引位置
遍历时不应当执行删除、新增选项,更改当前选项等所有可能改变高级选项卡索引的操作。*/
}
返回x,y,cx,cy等4个值,
分别表示高级选项卡当前左,上坐标,宽度,高度
参数指定屏幕坐标,返回该坐标所在的选项卡,以及选项索引
获取子窗口所在的选项索引位置
参数指定相同索引位置的子窗体对象
获取选项卡按钮所在的索引位置
参数指定选项卡按钮对象
初始化为弹出菜单样式
@handleCtrl指定接收输入事件的控件,
自动修改该控件的checked属性为是否弹出状态,
transparent指定菜单是否透明,
所有参数可选
选项卡是否可见
选项卡间隔距离,可以为负数
是否保持选项之间的间距不变,
该属性建议由aardio自动设置
最后一个显示状态的选项卡索引
在这后面是因为超出显示范围被自动隐藏的选项卡
最后一个显示状态的选项卡
在这后面是因为超出显示范围被自动隐藏的选项卡
这是一个plus控件对象
加载窗体到高级选项卡的页面容器控件,并绑定选项卡。
选项卡必须已经匹配到可用的页面容器,
也就是说 panel 属性不为空值。
高级选项卡默认会自动查找附近合适的 custom 控件作为页面容器
也可以手动指定 panel 指向的窗口
loadForm 函数默认会加载延迟创建实际窗口的伪窗口。
访问伪窗口的任何属性或方法都会自动创建真实窗口。
在页面容器控件创建默认子窗体并绑定到最后一个选项卡。
返回创建的子窗口对象。
在页面容器控件创建默认子窗体并绑定到指定的选项卡。
数 @tabIndex 指定索引,可用负索引表示倒计数,-1 表示最后一个选项卡。
如果不指定索引则默认取 forms 属性的数组长度并加 1 作为索引。
与其他函数同的是:此函数省略参数 @1 可不用占位,允许参数 @2 写为 参数 @1。
省略参数 @2 则立即创建默认子窗体并加载到页面,然后返回该窗体。
在页面容器控件内预加载创建子窗体的代码文件,
并绑定到参数 @tabIndex 指定索引的选项卡。
参数 @tabIndex 可用负索引表示倒计数,-1 表示最后一个选项卡。
在开发环境中,请注意保存外部窗体文件以后测试运行。
默认会创建并返回一个伪窗口对象,
并延迟到用户切换到所属选项卡时才会真正创建窗口。
访问伪窗口除 fake 以外的任何属性方法也会立即创建窗口。
在页面容器控件内创建子窗体并绑定到参数@1指定索引的选项卡。
参数 @tabIndex 可用负索引表示倒计数,-1 表示最后一个选项卡。
默认会创建并返回一个伪窗口对象,
并延迟到用户切换到所属选项卡时才会真正创建窗口。
访问伪窗口除 fake 以外的任何属性方法也会立即创建窗口。
将 @winform 指定的子窗体添加到页面容器,
并绑定到参数 @tabIndex 指定索引的选项卡。
参数 @tabIndex 可用负索引表示倒计数,-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(tabButton,wParam,lParam){
/*在选项卡按钮 tabButton(plus 控件) 上按下鼠标,即将切换当前选项卡。
wParam,lParam为窗口消息参数*/
}
winUiTabsObject.onMouseHover = function(tabButton,wParam,lParam){
/*鼠标正悬浮于选项卡按钮 tabButton 之上,
wParam,lParam为窗口消息参数*/
}
winUiTabsObject.onMouseLeave = function(tabButton,wParam,lParam){
/*鼠标离开选项卡按钮 tabButton,
wParam,lParam为窗口消息参数*/
}
winUiTabsObject.onMouseLeave = function(tabButton,wParam,lParam){
/*鼠标离开选项卡按钮 tabButton,
wParam,lParam为窗口消息参数*/
}
winUiTabsObject.onMouseUp = function(tabButton,wParam,lParam){
/*在选项卡按钮 tabButton(plus 控件) 上放开鼠标,选项卡切换操作已完成,
wParam,lParam为窗口消息参数*/
}
winUiTabsObject.onOk = function(tabButton){
/*用户在弹出列表中选择并确认选项,且即将关闭弹出列表*/
}
winUiTabsObject.onPopup = function(showing){
/*弹出状态变更时触发此事件
弹出状态@showing参数为true,显示为弹出状态@showing参数为false*/
}
winUiTabsObject.onSelchange = function(tabIndex,tabButton,formPage){
/*切换选项会触发此事件,tabIndex 为当前选中索引
tabButton 为当前选项卡按钮对象,formPage 为当前子窗口。
如果在这里禁用选项卡或 tabButton,则不会自动触发 tabButton 的其他事件。*/
}
winUiTabsObject.onVisualStateChanged = function(showing){
/*显示或隐藏时触发此事件
显示 @showing 参数为 true,隐藏 @showing 参数为false*/
}
winUiTabsObject.oncommand = function(tabButton,id,event){
/*点击选项卡按钮触发此函数
tabButton 为触发事件的选项卡按钮对象(plus 控件)。
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 = "名字";/*使用选项卡按钮的指定属性查询对应的子窗口(formPage)。
如果子窗口是延迟加载状态则会立即加载。
选项卡的任一属性值与查询条件相同即可,不需要匹配所有查询属性。
自定义属性建议加上 data 前缀以避免与控件属性混淆。
也可以用一个字符串参数直接查询选项卡按钮的标题。
返回选项卡按钮对应的子窗口对象,以及所在选项索引(数值).*/
)
winUiTabsObject.queryTab(text = "标题"/*使用控件的指定属性查询对应的选项卡按钮,
选项卡按钮的任一属性值与查询条件匹配即可,不需要满足所有查询条件。
用户自定义属性建议加上 data 前缀以避免以控件已有属性名称冲突。
也可以用一个字符串参数直接查询选项卡按钮的标题,
返回选项卡按钮对象,以及所在索引数值*/)
当前选中的子窗口
获取或指定当前选中项索引,设为 null 清除当前选项,
如果新的选中项已被自动折叠,则会自动移动到可见位置
所以设置selIndex时可能导致selIndex移动位置
获取或指定当前选中的选项卡按钮
指定 null 或不存在于 tabs 中的控件时清除选中项,
获取当前选中项文本,
也可以指定一个文本用于切换到显示该文本的选项卡
设置 @tabIndex 参数指定索引的选项卡按钮属性。
@tabProperties 参数指定控件属性表。
使用文本数组更新选项卡数组,
此函数可重用已创建的选项卡,所以有更好的性能
使用参数@texts指定的字符串数组创建选项卡数组,
其中的每个字符串用于指定选项卡上的显示文本。
可选用@limit参数指定最大显示条数,
可选用@selIndex参数指定默认选中索引,
此函数返回实际显示条数
使用控件初始化选项数组更新选项卡数组,
此函数可重用已创建的选项卡,所以有更好的性能
使用参数@items指定的选项数组更新选项卡数组,
每个选项提供控件的初始化属性并将被传入add函数。
可选用@limit参数指定最大显示条数,
可选用@selIndex参数指定默认选中索引,
此函数返回实际显示条数
批量设置所有选项卡按钮(plus 控件)的指定属性值。
参数 @2 应传入一个属性值数组,函数会遍历属性值数组,并设置相同索引的选项卡按钮。
第 1 个选项卡按钮设置第 1 个属性值,第 2 个选项卡按钮设置第 2 个属性值,
依此类推。
显示或隐藏所有选项卡按钮,可选输入以 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;}
};
})
交换两个索引的选项卡位置
参数 tabIndex,tabIndex2 应当是有效的选项卡索引
这个函数如果没有弄清楚原理最好不要使用,
高级选项卡会在需要的时候自动调用此函数,
成功返回true,失败返回null
更新选项卡绘图区域,
参数必须是兼容 win.region.png 接口的对象
用于显示页面内容的子窗口数组,
选中的子窗口将在 panel 属性指定的容器控件中显示。
子窗口是 win.form 对象
用于构成选项卡头部区域( tab header area )的选项卡按钮数组。
所有选项卡按钮都是 plus 控件(win.ui.ctrl.plus 控件)。
选项卡按钮数组包含的按钮对象。
所有选项卡按钮都是 plus 控件(win.ui.ctrl.plus 控件)。