首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

vbIEli浏览器

2022-12-17 来源:化拓教育网
VB课程设计报告书

2007-07-29 14:01:24| 分类: 学术交流区 | 标签: |字号大中小 订阅

课程设计报告书

(I E浏览器)

班 级:机械0601-4班

学 号:20060627

姓 名:景 琦 指 导 教 师:李 静

石 家 庄 铁 道 学 院

2007年7月23日

题目: IE浏览器

内容摘要:一个简单的IE浏览器,功能简单实用,比较容易被用户所使用,

此报告详细的介绍了此浏览器的编辑思想和方法,并给出了相关的源代码,便于读者参考。该浏览器突破传统浏览器功能繁多复杂的特点,所设功能简单实用,

操作起来方便。

索引关键词:浏览器 编辑 界面 代码

目录

1. 题目要求-----------------------------------------------------------1 2. 设计思想------------------------------------------------------ 2

3. 系统完成功能及框图---------------------------------------2 4. 界面设计------------------------------------------------------3 5. 核心算法及说明--------------------------------------------6 6. 结论----------------------------------------------------------- 9 7. 参考资料-----------------------------------------------------9 8. 后记-----------------------------------------------------------9 9. 附录-----------------------------------------------------------10

第一章:题目要求

1. 1:要求达到的功能图框

1. 2:主界面参考

1. 3:要求

l ▲ 地址栏保存最近访问的 10 条记录

l▲ 工具栏包含:前进、后退、停止、刷新按钮及完成相应的功能

l ▲ 完成菜单中要求的功能。

1

第二章:设计思想

2.1:主体思想

设计一个IE浏览器,其主要功能是浏览网页。为了实现浏览网页的功能,我添加一个控件:WebBrowser。这个控件的Navigate方法可以打开指定的网页,从而实现了浏览网页的目的。我用一个ComboBOX作地

址栏,定义它的Click事件和Keydown事件,开始搜网。

我直接用Combo1.AddItem (Combo1.Text),来保存当前网址。为了避免地址栏保存重复的网址,我用了一个循环结构和两个选择结构并且定义了一个逻辑型变量existed。当existed为ture时即组合框中已存在

当前网址则Combo不添加网址,当existed为False时Combo添加当前的网址。

然后我着手开始设计主界面,我在程序中定义控件的top、left、width和hight,让控件随着窗体的变化而变化。我先用一个coolbar,然后把工具栏放在上面,因为这样视觉上看着整齐。对于那些菜单的设计,

我采用了菜单编辑器,编辑出需要使用的菜单。

接下来我就开始设计菜单的功能,对于“文件”菜单,其中“新建”和“关闭”菜单就利用窗体的相关方法就可实现。比较麻烦的是“打开”菜单项,我添加了一个窗体作为“打开”对话框,并且添加了一个commondialog通用对话框,作为浏览选项所用。然后编写相应的程序。对于“编辑”菜单的各项功能,可以调用WebBrowser控件的ExecWB方法,实现相应功能。对于“查看”菜单的各项功能,可以用WebBrowser的停止和刷新方法即、WebBrowser1.Stop、WebBrowser1.Refresh就可达到相应功能。最后一个菜单“收藏”是最不好做的,要做到这步,需用数据库。这个数据库包括“网名”、“网址”、“关于”三个字段,

在这一部分我用了三个窗体,一个作为添加收藏夹的对话框,一个做为浏览收藏夹用。

2.2:扩张思想

利用所学知识结合用户的实际需要改进和新增一些功能。首先在主界面的设置上,充分体现一切为用户服

务的态度,我通过设置各个控件的坐标和大小,使其随窗体一起变化。

针对用户在大写状态输入网址会出错的情况,我在状态拦里增添了大小写的提示(caps), 并设置时钟提示,显示当前时间,方便了用户。其次在其他窗体的设计上,体现功能的简单和实用,在设计收藏夹时,突破传统收藏夹功能繁多使用复杂的特点,设计出可以简单浏览、增添和修改的收藏夹。 2

第三章:系统完成功能及功能框图

3.1:主要功能

该浏览器除有浏览网页的功能,还能在地址拦保存最近浏览的网址,工具拦有前进、后退、停止、刷新、主页和浏览收藏夹等功能。在主窗体上还设有时间和caps提示。还有“文件”、“编辑”、“查看”和“收

藏”四个菜单,并且每个菜单有若干个子菜单,具备一些使用的功能。并且每个菜单设置了快捷键或热键。

一些详细功能见下框图

IE浏览器主界面

前进 后退 停止 刷新 主页 文件 编辑 查看 收藏 新建 打开 另存 打印 关闭 复制 粘贴 全选 查找 停止 刷新 添加收藏夹 整理收藏夹 浏览网页、保存地址、 查看时间、查看大小写、显示进度

查看收藏夹

3.2:功能框图

第四章:界面设计

3

4.1:主界面

主界面是用于基本的浏览,和一切功能的主体。

4.2:第二窗体

该窗体用于实现“文件”菜单的“打开”对话框,在空白处输入网址,点击“确定”可访问该网站。点击

“浏览”按钮,弹出打开文件对话框,选择要打开的文件,点击“确定”在浏览器中打开此文件。

4.3:第三窗体

该窗体用于添加收藏,点击“添加收藏”菜单弹出该窗体。

4

4.4:第四窗体

该窗体用于浏览收藏夹。

4.5:第五窗体

该窗体用于整理收藏夹,可实现添加、删除、修改和整理记录。

5

第五章:核心算法及说明

5.1:浏览网页的实现和地址拦添加网址的实现。

用以下语句,实行combo1的单击事件,使WebBrowser1打开指定的网址。

Private Sub combo1_click() '转到指定网址

Dim i As Long

WebBrowser1.Navigate Combo1.Text

End Sub

利用一个Left函数和条件语句,实现当在地址拦输入网址未加http://时,自动添加

Private Sub Combo1_Keydown(keycode As Integer, Shift As Integer)

Dim i As Long, existed As Boolean '逻辑型 If keycode = 13 Then `表示按下回车键

If Left(Combo1.Text, 7) <> \"http://\" Then '如过左边七个字符不是,利用函数

Combo1.Text = \"http://\" + Combo1.Text

End If

WebBrowser1.Navigate Combo1.Text '打开网页

For i = 0 To Combo1.ListCount - 1 If Combo1.List(i) = Combo1.Text Then

existed = True Exit For Else existed = False

End If Next

If Not existed Then '如果不存在,则添加

Combo1.AddItem (Combo1.Text)

End If End If End Sub

5.2:进度条的变化

Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)

'下载进行时进度条变化 If ProgressMax = 0 Then Exit Sub

6

ProgressBar1.Max = ProgressMax`设置最大值

If Progress <> -1 And Progress <= ProgressMax Then`用一个条件语句,确定填充块的显示

ProgressBar1.Value = Progress

End If End Sub

5.3:设置界面。使控件随窗体的变化而变化

Private Sub Form_Resize()

On Error GoTo a`设置错误语句,如果错误则转到语句a: CoolBar1.Width = Form1.Width - 100 '使其宽度随窗口变化 WebBrowser1.Width = CoolBar1.Width '使其宽度随窗口变化 WebBrowser1.Height = Form1.Height - CoolBar1.Height - CoolBar1.Top

ProgressBar1.Top = Me.Height - StatusBar1.Height - 600 ProgressBar1.Left = StatusBar1.Width设置ProgressBar1的坐标 StatusBar1.Width = Me.Width - ProgressBar1.Width - 300

StatusBar1.Style = sbrSimple

ProgressBar1.Zorder`设置这两个控件的顺序,使ProgressBar1在上面

a: End Sub

5.4:设置第二个窗体为椭圆形。

添加BAS模块,并加载API函数,选择CreateEllipticRgn和 SetWindowRgn函数,以下是两个函数的声

明。

Private Declare Function CreateEllipticRgn Lib \"gdi32\" (ByVal X1 As Long, ByVal Y1 As Long, ByVal

X2 As Long, ByVal Y2 As Long) As Long

Private Declare Function SetWindowRgn Lib \"user32\" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal

bRedraw As Boolean) As Long

Private Sub Form_Load() '建立CreateEllipticRgn()函数,用SetWindowRgn()函数调用

Dim lReturn As Long

lReturn = SetWindowRgn(hWnd, CreateEllipticRgn(10, 10, 440, 350), True)

End Sub

5.5:实现对收藏夹的添加、删除和修改

7

利用DATA的Data1.Recordset.AddNew方法新增记录并调用Update方法将缓冲区数据写入数据库

Private Sub Label5_Click()

Label6.Enabled = Not Label6.Enabled '添加时“修改”和“删除”不可用

Label7.Enabled = Not Label7.Enabled If Label5.Caption = \"添加\" Then

Label5.Caption = \"确认\"

Data1.Recordset.AddNew '添加一条新记录

Text1.SetFocus

Else

Label5.Caption = \"添加\"

Data1.Recordset.Update '调用Update方法,将缓冲区数据写入数据库

Data1.Recordset.MoveLast`移至最后一条记录

End If End Sub

利用记录集的Delete方法删除记录 Private Sub Label6_Click() On Error Resume Next Data1.Recordset.Delete Data1.Recordset.MoveNext

If Data1.Recordset.EOF Then`如果到了最后一条记录之后,则移到最后记录

Data1.Recordset.MoveLast

End If End Sub

利用条件语句,结合DATA的Edit方法,修改记录。

Private Sub Label7_Click() Label5.Enabled = Not Label5.Enabled Label6.Enabled = Not Label6.Enabled If Label7.Caption = \"修改\" Then Label7.Caption = \"确认\" Data1.Recordset.Edit对记录进行编辑 Text1.SetFocus`文本框获得焦点

Else

Label7.Caption = \"修改\" Data1.Recordset.Update

End If

8

End Sub

5.6:实现第二窗体的“浏览”功能

Private Sub Command3_Click()

On Error GoTo nofile

CommonDialog1.ShowOpen`设置通用对话框的样式即打开文件对话框

Combo1.Text = CommonDialog1.FileName`组合框内返回对话框选择的文件的路径名

Command1.Enabled = True使该控件可用

Exit Sub nofile:

If Err.Number = 32755 Then Exit Sub

End Sub

第六章:结论

刚拿到这个题目时。我真的感到无从下手,我才发现我们学的是那么少,我使劲的回想老师讲过的点点滴滴,我想到老师曾说过有一个什么控件是可以打开网页文件的,于是我开是查资料,了解到有个WebBrowser控件,利用它可以实现好多浏览器的功能。找到突破口我就开使不断的进军,课上不停的调试,有些属性就是靠调试知道的,比如说我主界面的控件随窗体一起扩大或缩小时,刚开使想象的挺简单的,不就是设置几个坐标和大小吗,可是一调试时就出现问题,有时都找不到我刚添加的控件了,在个过程中,我不断总结经验,我知道了把程序备份的好处。于是在课上我调程序,课下我就学习,以为我们的课本还没学完,我就先把后面没讲的内容看了有看,明白了好多,同时我也去图书管借书和上网查相关资料,关查到不行有的还的灵活的应用,这就需要你能完全的理解。通过一些天的查资料我越来越感觉我们学的是太少了,

在VB中还有好多好多等着我们去学,同时我也有了更大的兴趣去学VB。

参考文献

1. 龚沛曾.《VB程序设计简明教程(第二版)》,高等教育出版社,2002.8

2. www.baidu.com

3. 《Visual Basic 课程设计案例精编》中国水利水电出版社 张勇等编著

4. 《Visual Basic使用大全》

5. MSDN 帮助库

后记

9

感谢学校能开设这门课程设计,它让我学到了好多,不只是单纯的知识更重要的是它教会我如何解决实际问题,如何去学习新的东西。在这些天中老师的帮助和鼓励一直激励着我不断的去学,感谢李静老师对我

们的指导,她的认真负责使得我不断的进步。

附录(源程序代码)

1.主窗体代码

Option Explicit

Private Sub xinjian1_Click() '新建

Dim newweb As New Form1 newweb.Show '新建一个窗口

End Sub

Private Sub dakai1_Click() '打开

Form2.Show '显示第二个窗体

End Sub

'调用WebBrowser组件的execWB方法,这样简单了好多

Private Sub lincun1_Click() '另存为

WebBrowser1.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_PROMPTUSER

End Sub

Private Sub dayin_Click() '打印

WebBrowser1.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER

End Sub

Private Sub guanbi1_Click() '关闭

Unload Me End Sub

Private Sub Form_Load() Form1.Caption = \"琦琦浏览器\"

Combo1.Text = \"\"

CoolBar1.Bands(1).MinWidth = 150 * Screen.TwipsPerPixelX CoolBar1.Bands(2).MinWidth = 150 * Screen.TwipsPerPixelX

CoolBar1.Bands(3).MinWidth = 100 * Screen.TwipsPerPixelX '设置每个BAND的宽度

Set Picture1.Container = CoolBar1 Set CoolBar1.Bands(2).Child = Picture1

Set Toolbar1.Container = CoolBar1 '使 Toolbar1被包含在CoolBar1.Bands(1)中

Set CoolBar1.Bands(1).Child = Toolbar1 CoolBar1.Width = Form1.Width '设置其位置

CoolBar1.Left = 0

WebBrowser1.Top = CoolBar1.Top + CoolBar1.Height

10

WebBrowser1.Left = 0 '设置其位置和大小

WebBrowser1.Width = Form1.Width

WebBrowser1.Navigate \"http://www.sjzri.edu.cn\"

End Sub

Private Sub Form_Resize()

On Error GoTo a

CoolBar1.Width = Form1.Width - 100 '使其宽度随窗口变化 WebBrowser1.Width = CoolBar1.Width '使其宽度随窗口变化 WebBrowser1.Height = Form1.Height - CoolBar1.Height - CoolBar1.Top

ProgressBar1.Top = Me.Height - StatusBar1.Height - 600

ProgressBar1.Left = StatusBar1.Width

StatusBar1.Width = Me.Width - ProgressBar1.Width - 300

StatusBar1.Style = sbrSimple

ProgressBar1.ZOrder

a: End Sub

Private Sub fuzhi1_Click() '复制

WebBrowser1.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT

End Sub

Private Sub niantie1_Click() '粘贴

WebBrowser1.ExecWB OLECMDID_PASTE, OLECMDEXECOPT_DODEFAULT

End Sub

Private Sub quanxuan1_Click() '全选

WebBrowser1.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT

End Sub

Private Sub chazhao1_Click() '查找

WebBrowser1.SetFocus SendKeys \"^{f}\" '函数

End Sub

Private Sub picture1_resize()

On Error Resume Next

11

Label1.Left = 0 '在picture1中放入 Label1和Combo1,使其随picture1变化

Label1.Top = (Picture1.ScaleHeight - Label1.Height) / 22

Combo1.Left = Label1.Width

Combo1.Top = (Picture1.ScaleHeight - Label1.Height) / 22 '通过试验此距离最合适

Combo1.Width = Picture1.Width - Label1.Width

End Sub

Private Sub combo1_click() '转到指定网址

Dim i As Long

WebBrowser1.Navigate Combo1.Text

End Sub

Private Sub Combo1_Keydown(keycode As Integer, Shift As Integer)

Dim i As Long, existed As Boolean '逻辑型

If keycode = 13 Then

If Left(Combo1.Text, 7) <> \"http://\" Then '如过左边七个字符不是

Combo1.Text = \"http://\" + Combo1.Text

End If

WebBrowser1.Navigate Combo1.Text '打开网页

For i = 0 To Combo1.ListCount - 1 If Combo1.List(i) = Combo1.Text Then

existed = True Exit For Else existed = False

End If Next

If Not existed Then '如果不存在,则添加

Combo1.AddItem (Combo1.Text)

End If End If End Sub

Private Sub tingzhi1_Click() '停止

WebBrowser1.Stop

Me.Caption = WebBrowser1.LocationName '显示网页的名

End Sub

12

Private Sub shuaxin1_Click() '刷新

WebBrowser1.Refresh

End Sub

Private Sub tianjia1_Click() '添加收藏夹

Form3.Show End Sub

Private Sub zhengli1_Click() '整理收藏夹

Form5.Show End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) '工具栏

On Error Resume Next '如果错误继续

Select Case Button.Index

Case 1

WebBrowser1.GoBack '后退

Case 2

WebBrowser1.GoForward '前进

Case 3 WebBrowser1.Stop

Me.Caption = WebBrowser1.LocationName '显示网页的名

Case 4

WebBrowser1.Refresh '刷新

Case 5

WebBrowser1.GoHome '主页

Case 6 Form5.Show

End Select End Sub

Private Sub WebBrowser1_DownloadBegin() '下载开始时状态栏显示“正在下载,请少候”

StatusBar1.Panels(1).Text = \"正在下载,请少候\"

End Sub

13

Private Sub WebBrowser1_DownloadComplete() '下载完成时状态栏显示“完毕”

StatusBar1.Panels(1).Text = \"完毕\"

ProgressBar1.Value = 0

End Sub

Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)

'下载进行时进度条变化 If ProgressMax = 0 Then Exit Sub ProgressBar1.Max = ProgressMax

If Progress <> -1 And Progress <= ProgressMax Then

ProgressBar1.Value = Progress

End If End Sub

Private Sub WebBrowser1_TitleChange(ByVal Text As String) Combo1.Text = WebBrowser1.LocationURL '显示当前网页名

End Sub

2. form2代码

Private Sub Command1_Click()

Form2.Hide

Form1.WebBrowser1.Navigate Combo1.Text

End Sub

Private Sub combo1_change() If Combo1.Text <> \"\" Then Command1.Enabled = True

Else

Command1.Enabled = False

End If End Sub

Private Sub Combo1_Keydown(keycode As Integer, Shift As Integer)

Command1.Enabled = True

End Sub

Private Sub Command2_Click()

Unload Me End Sub

14

Private Sub Command3_Click()

On Error GoTo nofile CommonDialog1.ShowOpen

Combo1.Text = CommonDialog1.FileName

Command1.Enabled = True

Exit Sub nofile:

If Err.Number = 32755 Then Exit Sub

End Sub

3.form3代码

Private Sub Command1_Click() If Command1.Caption = \"添加\" Then

Command1.Caption = \"确认\"

mbookmark = Form4.Data1.Recordset.Bookmark

Form4.Data1.Recordset.AddNew Form4.Text1 = Text1.Text

Form4.Text2 = Form1.WebBrowser1.LocationURL

Else

Command1.Caption = \"添加\" Form4.Data1.Recordset.Update Form4.Data1.Recordset.MoveLast

Unload Me End If End Sub

Private Sub Command2_Click()

Unload Me End Sub

Private Sub Form_Load()

Text1.Text = Form1.WebBrowser1.LocationName

End Sub

4. form4代码

Private Sub data1_reposition() '改变指针位置,显示当前指针位置

Data1.Caption = Data1.Recordset.AbsolutePosition + 1 '当前记录集指针值加一

End Sub

Private Sub Label5_Click()

15

Label6.Enabled = Not Label6.Enabled '添加时“修改”和“删除”不可用

Label7.Enabled = Not Label7.Enabled If Label5.Caption = \"添加\" Then

Label5.Caption = \"确认\"

Data1.Recordset.AddNew '添加一条新记录

Text1.SetFocus

Else

Label5.Caption = \"添加\"

Data1.Recordset.Update '调用Update方法,将缓冲区数据写入数据库

Data1.Recordset.MoveLast

End If End Sub

Private Sub Label6_Click() On Error Resume Next Data1.Recordset.Delete Data1.Recordset.MoveNext If Data1.Recordset.EOF Then

Data1.Recordset.MoveLast

End If End Sub

Private Sub Label7_Click() Label5.Enabled = Not Label5.Enabled Label6.Enabled = Not Label6.Enabled If Label7.Caption = \"修改\" Then Label7.Caption = \"确认\" Data1.Recordset.Edit Text1.SetFocus

Else

Label7.Caption = \"修改\" Data1.Recordset.Update

End If End Sub

Private Sub Label8_Click()

Unload Me End Sub

Sub form_mousemove(Button As Integer, Shift As Integer, x As Single, y As Single)

If 1905 < y And y < 2295 Then '找出标签控件的坐标,然后定义鼠标移过事件

16

Label5.BackStyle = 1 Label6.BackStyle = 1

Else

Label5.BackStyle = 0 Label6.BackStyle = 0

End If

If y > 2625 And y < 3135 Then

Label7.BackStyle = 1 Label8.BackStyle = 1

Else

Label7.BackStyle = 0 Label8.BackStyle = 0

End If End Sub

5.form5代码

Sub form_mousemove(Button As Integer, Shift As Integer, x As Single, y As Single)

If x > 1050 And x < 2415 Then '找出标签控件的坐标,然后定义鼠标移过事件

Label1.BackStyle = 1

Else

Label1.BackStyle = 0

End If

If x > 2865 And x < 4515 Then

Label2.BackStyle = 1

Else

Label2.BackStyle = 0

End If

If x > 5265 And x < 6330 Then

Label3.BackStyle = 1

Else

Label3.BackStyle = 0

End If End Sub

Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 2500 MSFlexGrid1.ColWidth(1) = 2500 MSFlexGrid1.ColWidth(2) = 2000

17

End Sub

Private Sub Label1_Click()

Form1.WebBrowser1.Navigate MSFlexGrid1.Text

Form5.Hide End Sub

Private Sub Label2_Click()

Form4.Show End Sub

Private Sub Label3_Click()

Data1.Refresh MSFlexGrid1.Refresh

End Sub

18

因篇幅问题不能全部显示,请点此查看更多更全内容