多标签在浏览器中的实现

前一段时间报选修,相信大家对学校的管理系统都很熟悉,应该也会注意到在进入系统后要点击选修课会强制弹出一个窗口,而不是在原来的基础上转接,我就想研究一下浏览器的标签功能的实现。

要实现标签的功能,首先想到的应该就是SStab控件,这也是好多人都选取的。用它来做选项标签页很容易,可是用来做浏览器的标签就会很费力。sstab的每一个tab页都相当于一个容器,可以把webBrowser控件放到里面,这样就基本可以实现一个标签页的共能。可是浏览器的标签不是固定的,那么就只好随用随生成。在webBrowser的newwindow事件发生前加载一个新的标签:

Private Sub WebBrowser_BeforeNavigate2(Index As Integer, ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, - PostData As Variant, Headers As Variant, Cancel As Boolean) SSTab1.Tabs = SSTab1.Tabs + 1 '增加一个窗口 SSTab1.TabsPerRow = SSTab1.TabsPerRow + 1 SSTab1.TabCaption(SSTab1.Tabs - 1) = "新建窗口..." SSTab1.Tab=SSTab1.Tabs - 1 '新增窗口为当前标签 '加载新的WebBrowser控件并放在新的选项卡上 Load Web1(Web1.UBound+1) Set Web1(Web1.UBound).Container=SSTab1 Web1(Web1.UBound).Visible=True Web1(Web1.UBound).Left=0 Web1(Web1.UBound).Top=0 '获得URL '………… ' …… End sub

不过每次这样加载肯定效率不好。还有一种方法,就是利用一个Form做标签,因为Form本身就是一个容器,自然也就可以胜任这个工作。这里利用了MDI窗体和Form的MDiChild属性,这样和SStab的样式也就差不多了。具体操作:建好一个MDI主窗体Formmain,在另外建一个窗体FormBrowser并且添加上WebBrowser控件,设置好MDIChild 属性,把整个FormBrowser看作一个类,调用的时候直接生成即可。

'主窗体formmain Private Sub MDIForm_Load() Dim newWeb As frmWebBrowser '定义变量 Set newWeb = NewPage("http://www.baidu.com") '实例化 newWeb.WindowState = 2 End Sub '定义一个新建标签的过程 Public Function NewPage(strUrl As String) As frmWebBrowser Dim newWeb As frmWebBrowser Set newWeb = New frmWebBrowser newWeb.Show newWeb.WebBrowser1.Navigate strUrl Set NewPage = newWeb End Function '子窗体FrmWebBroeser Public m_URL as string Private Sub Form_Activate() frmMain.ActiveHwnd = Me.hWnd '获得进程句柄 If frmMain.isEditUrl = False Then frmMain.Text1.Text = m_URL Set frmMain.ActiveWeb = WebBrowser1 End Sub '获得导航链接 Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) m_URL = URL If frmMain.ActiveHwnd = Me.hWnd And frmMain.isEditUrl = False Then frmMain.Text1.Text = m_URL End If End Sub这样理论上就基本实现了自动标签链接之间的转换。在实现的时候很容易自动调出IE而不是切换到下一个标签,看来还得要强制一下。

不过这个的原理基本就是在下一个标签的时候导航了一个URL,太简单了。对于像学校信息管理系统那样的网络肯定是不行的,因为下一个界面的进入是在上一个的基础之上的,且每个人都是有密码信息,不能直接以URl访问,这样就是一个个加密的资源的交互,以后再研究。

首先申明:<br>1:本人是新人,沒有分不能下載其他高手的資源,所以才要積分下載<br>2:此程序正在編寫中。拿出來目的是希望能和有這個有興趣的朋友認識,一起研究學習。然後提出一系列問題希望有高手能指點一二。<br>3:如果你電腦沒有安裝DELPHI 還需要幾個文件才可以運行(為了減小主程序大小!)已上大家上傳下載地址(放到此程序同一目錄及可):http://download.youkuaiyun.com/source/493197<br><br>目前已實際的功能有:<br><br>1.輸入網址回車與直接選擇地址欄項都是直接打開頁面,選擇後面的搜索。可在地址欄直接輸入關鍵字用右鍵選擇(搜索按鈕上)的引擎進行搜索<br><br>2.頁面控制一:右下角按鈕1控制是否打開到新窗口(地址欄回車),第二個控制是否關閉到最后一個頁簽,第三個控制開啟的新地址在最后還是在當前右邊。<br><br>3.頁面控制二:地址欄前的加號是新增空白頁,搜索按鈕後面第一個圖標。提取網頁源代碼(已實現提取所有源碼與選擇部分源碼),第二個圖標控制地址欄處於上方還是下方,第三個圖標控制頁簽是處於上方還是下方,由於不能解決動態改變pagecontrol1的tabposition 會重繪使得WEB無法顯示。所有改到所有頁面關都關閉以后才能生效<br><br>4.頁面控制三:在頁簽上有雙擊關閉/右鍵閩南單擊關閉和F4快捷關閉,所以在關閉其它頁面事件放到地址欄上。地址欄右鍵單擊出來關閉左邊全部,右邊全部(未實現,由於關閉后頁時,當前頁簽會往后跳,造成有閃的感覺。)如果隱藏主菜單會出現主菜單上面的快捷鍵無效!<br><br>5.群組收藏功能,快捷鍵ctrl+d,可加入收藏群組,目前不能更新新的群組的內容。編輯功能未實現<br><br>還有好的問題。正在準備解決中<br><br>有些目前自己解決不了的問題在這里請求高手們出招:<br><br>還是一個一個的解決並提出來:<br><br>目前正處理的問題:如何關閉右邊所有頁簽。如果熱循環關閉當前右邊一個會造成當前頁的變換而形成閃動。不好!<br><br>如何解決....?<br>已在論壇發貼地址:http://topic.youkuaiyun.com/u/20080612/13/16e13b55-b27d-490e-8591-4240feddb9bd.html<br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值