背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-3397.html    注册17xie 一起来写书 实现您的出书梦想!

运行这个窗体,从驱动器列表框中选择保存有图片的驱动器,从目录列表框中选择保存有图片的目录,在文件列表框中单击想要显示的文件,如果是图片文件,则图片会显示在左下方,如果不是图片文件或该程序不支持这种格式,则会在图片右边给出提示,其效果如图8-13所示。

8-13  正在浏览图片

也可以通过资源管理器,将找到的图片文件直接拖拽到图像控件上,如图8-14所示。

8-14  正在将图片文件拖拽到图像控件上

选中不再需要的文件,单击删除按钮,还可以将这些文件移动到回收站,其效果如图8-15所示。

8-15  正在删除文件

8.6  项目指导(一个简单的文本编辑器)

新建一个窗体,设置其MaxButton属性为False。在上面画一个文本框,设置其MultiLine属性为TrueScrollBars3-Both,画一个框架,在框架上放置十一个命令按钮,再画一个通用对话框控件,其布局如图8-16所示。

8-16  一个简单的文本编辑器设计界面的布局

在其代码窗口中输入如下代码:

Private FileName As String    '定义模块级的变量

Private IsNew As Integer

Private NotSave As Integer

Private Sub SaveAs()

Dim Handle As Integer

Handle = FreeFile()

If IsNew > 0 Then   '按下打开按钮的情况下,IsNew的值是0,IsNew==1,说明按了新建按钮,2按下了另存为按钮

  CommonDialog1.FileName = FileName

  CommonDialog1.CancelError = True     '按“取消”键会触发错误

  On Error GoTo ErrHandler

  CommonDialog1.Flags = cdlOFNOverwritePrompt   '若文件已存在,提示是否要覆盖

  CommonDialog1.Filter="TextFiles(*.txt)|*.txt|BatchFiles (*.bat)|*.bat|INI files(*.ini)|*.ini|*.*|*.*"

  CommonDialog1.FilterIndex = 1    '指定缺省的过滤器

  CommonDialog1.ShowSave:FileName = CommonDialog1.FileName

End If

On Error GoTo WriteError

Open FileName For Output Shared As #Handle  'Append是追加到尾部,这里不用之

'Write #handle, Text1.Text write要在字符串首尾加双引号,而print

Print #Handle, Text1.Text

Close #Handle

Command1.Enabled = True:Command4.Enabled = False:Command5.Enabled = False

IsNew = 0:NotSave = 0

Exit Sub

WriteError:

  MsgBox "写磁盘错误,可能磁盘有问题或文件具有只读属性!", 48, "写盘错误!"

ErrHandler:       '用户按了“取消”按钮

  Exit Sub

End Sub

Private Sub Form_Load()

Me.BorderStyle = 1     '固定大小

Me.Caption = "一个简单的的文本编辑器"

Text1.BackColor = &HFFFFFF

Text1.ForeColor = &H0&

Text1.Font.Size = 10

Text1.Text = Space(0)

Text1.MaxLength = 65535         '最大只能是64k

Text1.Locked = True              '不能修改,但可以选择,复制

Text1.Enabled = False             '不能修改,复制,只能显示

Frame1.Caption = "请选择:":Command1.Caption = "新建"

Command2.Caption = "打开"

Command3.Caption = "修改":Command4.Caption = "保存"

Command5.Caption = "另存为":Command6.Caption = "清除"

Command7.Caption = "关闭":Command8.Caption = "背景颜色"

Command9.Caption = "前景颜色":Command10.Caption = "字体"

Command11.Caption = "打印":Command6.Cancel = True   '默认按Esc时,执行此命令

Command7.TabIndex = 0:Command3.Enabled = False

Command4.Enabled = False

Command5.Enabled = False

FileName = Space(0)

IsNew = 1         '1为新建,0为打开,2为另存为

NotSave = 0       '1没有存过盘,其他保存过,此处初始化为0,这样一旦什么也没有输入时,就不再问存盘了

End Sub

Private Sub Command1_Click()

Text1.Text = Space(0):Text1.Locked = False:Text1.Enabled = True

Text1.SetFocus

Command1.Enabled = False

Command3.Enabled = False

IsNew = 1

End Sub

Private Sub Command2_Click()  '若连续打开文件,后者将插入到前者的尾部

Dim Str0 As String            '不要使用str,因为这是一个数值转为字符串的函数名

Dim Str1 As String

Dim Handle As Integer

Text1.Enabled = True:CommonDialog1.CancelError = True    '按“取消”键会触发错误

On Error GoTo ErrHandler

CommonDialog1.Filter= "Text Files(*.txt)|*.txt|Batch Files (*.bat)|*.bat|INI files(*.ini)|*.ini|*.*|*.*"

CommonDialog1.FilterIndex = 1       '指定缺省的过滤器

CommonDialog1.ShowOpen:FileName = Space(0):FileName = CommonDialog1.FileName

Handle = FreeFile():Open FileName For Input Shared As #Handle:Str1 = Space(0)

Do While Not EOF(Handle)

  Input #Handle, Str0

  Str1 = Str1 + Str0 + Chr(13) + Chr(10)

Loop

Close #Handle

If Len(Str1) <= 65535 Then

  Text1.Text = Str1

  'Text的值变了,触发Change事件,使NotSave1,而事实上,数据尚未改动过

  ',Change中的值再恢复为原值,就是下面的三个语句

  Command4.Enabled = False:Command5.Enabled = False:NotSave = 0

  Command1.Enabled = False:Command3.Enabled = True

Else

  MsgBox "文件字节数不能超过64K", vbOKOnly, "超出范围!"

End If

IsNew = 0:NotSave = 0:Exit Sub

ErrHandler:        '用户按了“取消”按钮

  Exit Sub

End Sub

Private Sub Command3_Click()

Text1.Locked = False:Text1.Enabled = True:Text1.SetFocus

End Sub

Private Sub Command4_Click()

Call SaveAs

End Sub

Private Sub Command5_Click()

IsNew = 2:Call SaveAs

End Sub

Private Sub Command6_Click()

Text1.Text = Space(0)

End Sub

Private Sub Command7_Click()

Unload Me               

End Sub

Private Sub Command8_Click()

CommonDialog1.CancelError = True         '按下取消键时触发错误事件

On Error GoTo ErrHandler

CommonDialog1.Flags = cdCCFullOpen      '显示全部的对话框,包括自定义颜色部分

CommonDialog1.ShowColor:Text1.BackColor = CommonDialog1.Color

Text1.SetFocus                'Text1Enabled为假时,此语句也会触发错误事件

Exit Sub

ErrHandler:     '此处是错误处理程序,这里为空语句

If Text1.Enabled = "True" Then

  Text1.SetFocus

End If

End Sub

Private Sub Command9_Click()

CommonDialog1.CancelError = True:On Error GoTo ErrHandler

CommonDialog1.Flags = cdCCFullOpen      '显示全部的对话框,包括自定义颜色部分

CommonDialog1.ShowColor:Text1.ForeColor = CommonDialog1.Color:Text1.SetFocus

Exit Sub

ErrHandler:              '此处是错误处理程序,这里为空语句

If Text1.Enabled = "True" Then

  Text1.SetFocus

End If

End Sub

Private Sub Command10_Click()

CommonDialog1.CancelError = True

On Error GoTo ErrHandler

CommonDialog1.Flags = cdlCFEffects Or cdlCFBoth Or cdlCFApply

CommonDialog1.FontName = Text1.FontName    '无此句,字体列表框处将无默认字体

CommonDialog1.ShowFont

Text1.FontName = CommonDialog1.FontName

Text1.FontSize = CommonDialog1.FontSize

Text1.FontBold = CommonDialog1.FontBold

Text1.FontItalic = CommonDialog1.FontItalic

Text1.FontUnderline = CommonDialog1.FontUnderline

Text1.FontStrikethru = CommonDialog1.FontStrikethru

Text1.ForeColor = CommonDialog1.Color:Text1.Refresh:Text1.SetFocus:Exit Sub

ErrHandler:            '此处是错误处理程序,这里为空语句

If Text1.Enabled = "True" Then

  Text1.SetFocus

End If

End Sub

Private Sub Command11_Click()

Dim X As Printer

CommonDialog1.CancelError = True

On Error GoTo ErrHandler

For Each X In Printers

   If X.DeviceName = "Star AR-3200+" Then

    Set Printer = X           '设定为系统缺省打印机。

      Exit For              ' 终止查找打印机。

   End If

Next

   CommonDialog1.ShowPrinter:Printer.Print Text1.Text     '打印输出

   Printer.EndDoc           '打印结束

   Text1.SetFocus           'Text1Enabled为假时,此语句也会触发错误事件

Exit Sub

ErrHandler:                 '此处是错误处理程序,这里为空语句

If Text1.Enabled = "True" Then

  Text1.SetFocus

End If

End Sub

Private Sub Text1_Change()

Command4.Enabled = True:Command5.Enabled = True:NotSave = 1

End Sub

Private Sub Form_Unload(Cancel As Integer)

Dim Tmp As Variant

If NotSave = 1 Then

If FileName = Space(0) Then

   FileName = "未命名"

End If

Tmp = MsgBox("是否保存对" + FileName + "的修改?", vbYesNoCancel + vbQuestion, "一旦丢失数据,有耕耘必有收获仍然是真话,只不过收获的是......")

   Select Case Tmp

   Case vbYes:

      Call SaveAs

   Case vbCancel:

      Cancel = 1

   End Select

End If

End Sub

运行此窗体,其初始界面如图8-1所示。此程序的功能介绍可参见本章的项目界面及其要求部分,这里不再赘述。

习题八

一、简答题

1.什么是文件?什么是顺序文件?什么是随机文件?什么是二进制文件?它们的主要特点是什么?

2.什么是文件缓冲区?问什么要设文件缓冲区?

3.什么是数据文件?数据文件与其他文件的关系是什么?

4.从存储信息的形式来看,文件可以分为几类?分别是什么?

5VB的文件系统能处理哪几种类型的文件?

6.什么是文件号?在打开、读写和关闭文件时,文件号起什么作用?

7.文件按照存取方式分为几种?

8.简述文件操作的步骤。

9.试比较InputLine Input语句在使用中的异同。

10.试比较Print  #Write  #语句在使用上的异同。

11.什么是文件的指针?如何实现文件指针的定位?

12.怎样触发驱动器列表框和目录列表框的Change事件?这两个控件的Change事件在程序设计中有什么作用?

二、程序设计题

1.某学校有在校生2300名,编程序将他们的学号、姓名、班级、性别、籍贯、入学分数、特长、专业、生活津贴输入到一个顺序文件中,文件名为“Resume.DAT”。

2.将刚入学的学生数据追加到“Resume.DAT”文件中。

3.从上述“Resume.DAT”文件中读出全部数据,并将其中所有“赵”姓写入到“SurnameIsZhao.DAT”文件中。

4.删除“SurnameIsZhao.DAT”文件中所有籍贯为河南的学生,然后给每人提高20%的生活津贴,将修改后的数据仍然保存在“SurnameIsZhao.DAT”文件中。

5.将1题的顺序文件改成随机文件,重做1234题。

6.编程实现将一个大文件分割成N个小文件,N数由用户指定。

7.编程实现将上述已经分割的N个小文件重新合并为一个文件。

8.编程实现将一个视频文件中的片断截取下来,写入到另一个文件中。

9.设计一个可以用计算机进行考试的程序,考题全部由判断题组成,要求该程序应具有出题、修改考题、随机产生考题、考试、上一题、下一题、交卷等功能,考题应保存在文件中,考生准考证号、姓名和考试成绩也要保存在文件中。

10.设计一个歌手大赛的评分程序,要求定义一个由报名号、姓名、5位评委成绩、总成绩、平均分和排名组成的记录类型,程序应具有输入歌手数据、去掉一个最高分、去掉一个最低分、计算总分、均分,最后由高到低输出歌手排名等功能。歌手数据要保存在文件中。

11.设计一个在指定目录下判断给出的文件或子目录是否存在的窗体,指定的目录和要查找的文件或子目录输入到文本框中,用命令按钮实现查找,用MsgBox对话框输出查找结果。


字数:9289    最后更新:1年以前 [09-06 03:49]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第八章  [后一页]:第九章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号