就像很多浏览器一样,标签页可以变成独立窗口。arrdio的高级选项卡也可以。
总的思路很简单,就是把选项卡窗体的父窗口和样式修改一下。
里面有一个关键点,就是必须把独立出来的窗体从选项卡容器(container)的子窗口队列中移除。因为tbs.loadform的本质是tbs.container.loadform,也就是mainform.custom.loadform。而custom 控件的 loadForm 函数会将窗体加载为子窗口, 自动维护一个子窗口队列,显示一个子窗口就会隐藏其他子窗口。如果不从这个队列中移除,就会出现,一切换选项卡,窗体就看不见了的情况。这个队列就是custom._forms。虽然它的名字带下划线,像个常量,其实可以移除其中的元素。
此外还有一些细节,代码里有说明。
下面的代码是aardio工程模板“横版导航”,其中50-93行是我们增加的代码,其余没有修改。
import fonts.fontAwesome;
import win.ui;
/*DSG{
{*/
mainForm = win.form(text="高级选项卡分离为独立窗口";right=1040;bottom=642;bgcolor=16777215;border="none")
mainForm.add(
caption={cls="bkplus";text="选项卡变独立窗口";left=35;top=12;right=160;bott