制作到现在碰到的最大的难点在于SSTAB这个东西上,我的多窗口的做法是在每一个SSTAB.TAB上生成一个WEBBROWSER,当然,这个webbrowser先定义成控件组.这样就形成了一个sstab.tab(i)对应一个webbrowser(i),做窗口操作的时候比较好处理.
可以在上文看到,还有一个display的变量,它是来做什么的呢?新建窗口的时候怎么处理?关闭窗口的时候又是怎么处理呢?这些当初困扰了我好久,逻辑有的,写的时候却经常犯下小失误.
先来谈谈新建窗口.
- @H_301_9@'判断此次新建窗口是否要闪烁按钮 @H_301_9@
- @H_301_9@If@H_301_9@noflash<>1Then@H_301_9@
- @H_301_9@Picture1.Picture=Picture15.Picture
- @H_301_9@End@H_301_9@If@H_301_9@
- @H_301_9@'总页面变量加1 @H_301_9@
- @H_301_9@totalpage=totalpage+1
- @H_301_9@'设置当前页的变量为总页面数-1,新页面总是在尾部添加标签 @H_301_9@
- @H_301_9@activepage=totalpage-1
- @H_301_9@'将页面总数赋予sstab的tab数 @H_301_9@
- @H_301_9@SSTab1.Tabs=totalpage
- @H_301_9@'当前显示的页面加1 @H_301_9@
- @H_301_9@display=display+1
- @H_301_9@'调整标签宽度 @H_301_9@
- @H_301_9@If@H_301_9@display>6Then@H_301_9@
- @H_301_9@SSTab1.TabsPerRow=display
- @H_301_9@Else@H_301_9@
- @H_301_9@SSTab1.TabsPerRow=6
- @H_301_9@End@H_301_9@If@H_301_9@
- @H_301_9@'判断尾部是否有隐藏的标签,有的话调整当前页位置向后移,暂定总页面数100页,@H_301_9@
- @H_301_9@'虽然这个页面数包括被关闭的标签数量,但是在正常情况下应该够了. @H_301_9@
- @H_301_9@For@H_301_9@i=activepageTo@H_301_9@100
- @H_301_9@
- @H_301_9@If@H_301_9@SSTab1.TabVisible(i)=True@H_301_9@Then@H_301_9@
- @H_301_9@activepage=i
- @H_301_9@SSTab1.Tab=activepage
- @H_301_9@Exit@H_301_9@For@H_301_9@
- @H_301_9@End@H_301_9@If@H_301_9@
- @H_301_9@Next@H_301_9@
- @H_301_9@'LoadWebBrowser1(WebBrowser1.ubound+1) @H_301_9@
- @H_301_9@'动态建立新的webbrowser控件 @H_301_9@
- @H_301_9@LoadWebBrowser1(activepage)
- @H_301_9@
- @H_301_9@'添加sstab超过perRow时top的自动位移 @H_301_9@
- @H_301_9@For@H_301_9@i=0To@H_301_9@totalpage-1
- @H_301_9@If@H_301_9@DoesControlExist(WebBrowser1(i))Then@H_301_9@
- @H_301_9@WebBrowser1(i).Top=340
- @H_301_9@WebBrowser1(i).Width=Me@H_301_9@.Width-120
- @H_301_9@WebBrowser1(i).Height=Me@H_301_9@.Height-1800
- @H_301_9@End@H_301_9@If@H_301_9@
- @H_301_9@Next@H_301_9@
- @H_301_9@WebBrowser1(activepage).Visible=True@H_301_9@
- @H_301_9@
- @H_301_9@WebBrowser1(activepage).Left=0
- @H_301_9@
- @H_301_9@'新建窗口以空白页显示 @H_301_9@
- @H_301_9@WebBrowser1(activepage).Navigate"about:blank"