跟我学做记事本

2016-02-19 21:09 10 1 收藏

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的跟我学做记事本,手机电脑控们准备好了吗?一起看过来吧!

【 tulaoshi.com - 编程语言 】

用VB做一个记事本实在不很复杂,我们完全可以通过向导来很方便地做出来。但本文只打算讨论用手动方法制作记事本,旨在向VB初学者展示:学VB原来是如此容易!
  通过阅读、研究本文并按本文所述进行尝试,初学者将学到很多东西,如怎样使用RichText控件来打开和保存文件,怎样制作菜单、工具栏和状态栏以及如何对其编写代码等。
  
  第一章让我们的记事本马上运行
  
  急于求成是初学者共有的心愿。那好,请按如下三个步骤做,我们的愿望立即就可以实现!
  
  步骤一:绘制界面。
  新建一个标准EXE工程,将其Caption属性改为“超级记事本”,点击Icon属性给它找个合适的Icon图标。单击菜单“工程”-“部件”,在弹出的“部件”对话框里找到MicrosoftRichTextBox6.0和公共对话框MicrosoftCommonDialog6.0并选中它们,单击“确定”按钮。这时左边的工具栏上出现了我们刚才新添的两个控件了。在窗体上绘制RichTextBox和CommnDialog,其中RichTextBox的大小和位置可不用理睬,我们将在代码中处理它,当然,有必要把它的ScrollBar属性设为2-rtfVertical,这样在打开和编辑文件时垂直滚动条才可用。
  
  步骤二:编辑菜单。
  按Ctrl E调出菜单编辑器,我们来做如下几个菜单:
  一.文件菜单:
  文件(第一层)mnuFile
  新建(第二层)mnuNew
  打开(第二层)mnuOpen
  保存(第二层)mnuSave
  -(第二层)mnuFileSep(分隔线)
  退出(第二层)mnuExit
  二.编辑菜单:
  编辑(第一层)mnuEdit
  复制(第二层)mnuCopy
  剪切(第二层)mnuCut
  粘贴(第二层)mnuPaste
  -(第二层)mnuEditSep(分隔线)
  全选(第二层)mnuSelecAll
  三.搜索菜单:
  搜索(第一层)mnuSearch
  查找(第二层)mnuFind
  查找下一个(第二层)mnuFindOn
  四.帮助菜单:
  帮助(第一层)mnuHelp
  使用说明(第二层)mnuUsage
  关于(第二层)mnuAbout
  (注:各菜单项的快捷键请自行设置)
  
  好了,其它的菜单项以后再根据需要添加。现在进入:
  
  步骤三:编写代码。
  
  '声明查找变量
  DimsFindAsString
  '声明文件类型
  DimFileType,FiTypeAsString
  
  '初始化程序
  PrivateSubForm_Load()
  '设置程序启动时的大小
  Me.Height=6000
  Me.Width=9000
  EndSub
  
  '设置编辑框的位置和大小
  PrivateSubForm_Resize()
  OnErrorResumeNext'出错处理
  RichTextBox1.Top=20
  RichTextBox1.Left=20
  RichTextBox1.Height=ScaleHeight-40
  RichTextBox1.Width=ScaleWidth-40
  EndSub
  
  '新建文件
  PrivateSubmnuNew_Click()
  RichTextBox1.Text=""'清空文本框
  FileName="未命名"
  Me.Caption=FileName
  EndSub
  
  
  '打开文件
  PrivateSubmnuOpen_Click()
  CommonDialog1.Filter="文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"
  CommonDialog1.ShowOpen
  RichTextBox1.Text=""'清空文本框
  FileName=CommonDialog1.FileName
  RichTextBox1.LoadFileFileName
  Me.Caption="超级记事本:"&FileName
  EndSub
  
  '保存文件
  PrivateSubmnuSave_Click()
  CommonDialog1.Filter="文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"
  CommonDialog1.ShowSave
  FileType=CommonDialog1.FileTitle
  FiType=LCase(Right(FileType,3))
  FileName=CommonDialog1.FileName
  SelectCaseFiType
  Case"txt"
  RichTextBox1.SaveFileFileName,rtfText
  Case"rtf"
  RichTextBox1.SaveFileFileName,rtfRTF
  Case"*.*"
  RichTextBox1.SaveFileFileName
  EndSelect
  Me.Caption="超级记事本:"&FileName
  EndSub
  
  '退出
  PrivateSubmnuExit_Click()
  End
  EndSub
  
  '复制
  PrivateSubmnuCopy_Click()
  Clipboard.Clear
  Clipboard.SetTextRichTextBox1.SelText
  EndSub
  
  '剪切
  PrivateSubmnuCut_Click()
  Clipboard.Clear
  Clipboard.SetTextRichTextBox1.SelText
  RichTextBox1.SelText=""
  EndSub
  
  '全选
  PrivateSubmnuSelectAll_Click()
  RichTextBox1.SelStart=0
  RichTextBox1.SelLength=Len(RichTextBox1.Text)
  EndSub
  
  '粘贴
  PrivateSubmnuPaste_Click()
  RichTextBox1.SelText=Clipboard.GetText
  EndSub
  
  '查找
  PrivateSubmnuFind_Click()
  sFind=InputBox("请输入要查找的字、词:","查找内容",sFind)
  RichTextBox1.FindsFind
  EndSub
  
  '继续查找
  PrivateSubmnuFindOn_Click()
  RichTextBox1.SelStart=RichTextBox1.SelStart RichTextBox1.SelLength 1
  RichTextBox1.FindsFind,,Len(RichTextBox1)
  EndSub
  
  '使用说明
  PrivateSubmnuReadme_Click()
  OnErrorGoTohandler
  RichTextBox1.LoadFile"Readme.txt",rtfText'请写好Readme.txt文件并存入程序所在文件夹中
  Me.Caption="超级记事本:"&"使用说明"
  ExitSub
  handler:
  MsgBox"使用说明文档可能已经被移除,请与作者联系。",vbOKOnly,"错误信息"
  EndSub
  
  '关于
  PrivateSubmnuAbout_Click()
  MsgBox"超级记事本Ver1.0版权所有(C)2001土人",vbOKOnly,"关于"
  EndSub
  
  '设置弹出式菜单(即在编辑框中单击鼠标右键时弹出的动态菜单)
  PrivateSubRichTextBox1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
  IfButton=2Then
  PopupMenumnuEdit,vbPopupMenuLeftAlign
  Else
  ExitSub
  EndIf
  EndSub
  
  '防止在切换输入法时字体自变(感谢王必成先生提供此方案)
  PrivateSubRichTextBox1_KeyUp(KeyCodeAsInteger,ShiftAsInteger)
  IfKeyCode=vbKeySpaceThen
  RichTextBox1.SelFontName=CommonDialog1.FontName
  EndIf
  EndSub
  
  至此,我们的记事本可以编译使用了。点击菜单“文件”-“生成XXX.EXE”,回到桌面运行我们的记事本看看,是不是颇有成就感?
  当然,这样的记事本还比较粗糙,我们还需要做些工作,请看下一章。
  
  
  第二章美化程序界面
  
  多数字处理软件都有工具栏和状态栏。工具栏和状态栏除了能美化我们的程序使其更具有专业性质外,还给用户带来操作上的便利。现在我们就来做一做这两样东西。
  
  一.工具栏
  (一)制作工具栏
  单击“工程”-“部件”,选中MicrosoftWindowsCommonControl6.0并确定。这时,我们要用到的控件就出现在左边的工具栏上了。
  要做工具栏,首先需要一个叫ImageList的控件来装载图像。在程序界面上添加它,然后右键单击此控件,左键单击“属性”,弹出“属性页”对话框的“图像”,再单击“插入图片”就可以一次性装载图片了(如不满意,以后还可以添加)。图片可在C:MicrosoftVisualStudioCommonGraphicsBitmapsTlBr_W95下选择(这里假设你的VB安装在C盘下)。注意了:在插入图片时给每一张图片注明关键字,以便在引用图片时不至于混乱。如插入“新建”的图片,我们在“关键字”栏注明“New”。
  图片有了,接下来在程序界面添加工具栏(ToolBar)。添加后工具栏就出现在菜单下面,右键单击它,选择“属性”,在弹出的“属性页”对话框中的“通用”项作些设置,主要如下两项:
  1.“图像列表”:选择ImageList1
  2.“样式”:根据喜爱选择1-trbStandard或者2-trbFlat
  继续点击“属性页”的“按钮”选项,插入若干按钮。按钮有多种样式,请根据需要设置。这里请一定注意:每一个与用户操作有关的按钮都必须注明关键字、装载图片,如“新建”按钮,在“关键字”项注明“新建”,在“图像”项键入“New”(即ImageList1中的图片关键字),需要的话还可以在“工具提示文本”项填入适当的提示语。
  (二)编写工具栏的按钮代码
  工具栏按钮的代码编辑很简单,可以按照下面的格式去编写:
  PrivateSubToolBar1_ButtonClick(ByValButtonAsMSComctlLib.Button)
  OnErrorResumeNext'出错处理
  SelectCaseButton.Key'按关键字选择
  Case"新建"
  mnuNew_Click'等于菜单项“新建”被单击
  Case"打开"'等于菜单项“打开”被单击
  mnuOpen_Click
  '......(继续编写其它按钮的代码)
  EndSelect
  EndSub
  
  完成后试运行一下我们的程序,我们发现,有了工具栏之后,程序变得漂亮多了,只是有一个问题:打开一个较长的文档后,编辑框的下拉滚动条向上的箭头不见了。原因是:工具条占用一定的空间。解决方法:将“设置编辑框的位置和大小”中的RichTextBox1.Top=20和RichTextBox1.Height=Me.ScaleHeight-40分别改为RichTextBox1.Top=380,RichTextBox1.Height=Me.ScaleHeight-400即可。
  
  二.状态栏
  (一)制作状态栏
  状态栏的英文名字叫StatusBar,在窗体上添加它后会默认出现在窗体的最下方。用鼠标右键点击它,调出“属性页”对话框,单击“窗格”项,插入一些窗格,可以将各个窗格的“样式”设置为:
  0-sbrText显示文本,需编写代码
  1-sbrCaps显示大小写状态,无需编程
  2-sbrNum显示NumLock键开关状态,无需编程
  3-sbrIns显示Insert键状态,无需编程
  4-sbrScr1
  5-sbrTime显示时间,不编程时时间不会随系统时钟变化
  6-sbrDate显示日期,无需编程
  注意:加进状态栏后需将Form_Resze中的RichTextBox1.Height=Me.ScaleHeight-400改为RichTextBox1.Height=Me.ScaleHeight-600。
  (二)状态栏根据其“样式”属性决定用不用编写代码(如上文所述)。下面举些例子,读者可以认真揣摩,从而达到举一反三的效果。
  
  例一:用户选取了“新建”后,让第一个窗格显示:“目前状态:正在打开文件《……》”。请将下面代码写进“打开”菜单里面:
  StatusBar1.Panels(1).Text="目前状态:正在打开文件"&"《"&CommonDialog1.FileTitle&"》"
  
  例二:让第三个窗格显示时间并让时间跟随系统时钟变化。
  首先,给程序加一个Timer控件,将其Interval属性设为1000。然后:
  在Form_Load过程加入:StatusBar1.Panels(1).Text=Time;然后给Timer控件编写代码:
  
  PrivateSubTimer1_Timer()
  IfStatusBar1.Panels(3).TextCStr(Time)Then
  StatusBar1.Panels(3).Text=Time
  EndIf
  EndSub
  
  例三:当编辑框的文本发生变化时让第一个窗格显示:“正在编辑文档:文件名”。
  PrivateSubRichTextBox1_Chang()
  StatusBar1.Panels(1).Text="正在编辑文档:"&CommonDialog1.FileName
  EndSub
  
  辛苦了那么久,我们现在已经拥有一个象模象样的记事本了。这个记事本由于用了RichText控件,理论上它能打开和编辑任意大的文档,使用起来的确比Windows自带的记事本方便得多。当然,还有一些其它的功能需要添加和完善,这就靠你慢慢去完成了。->

来源:http://www.tulaoshi.com/n/20160219/1625411.html

延伸阅读
标签: 毛孔
你是不是不化妆就不敢出门约会,你是不是很害怕对方发现你的真实面孔,你是不是天天为了毛孔粗大费尽心思呢,其实面对毛孔遮掩只会助长它的气焰,只有彻底清除毛孔垃圾,还能让毛孔隐形,所以今天在线求医小编就教大家隐藏毛孔,一起学起来吧。 一:清洁不彻底,撑大毛孔没商量你的毛细孔被撑大的原因跟没清除干净肌肤,污垢长期残留...
天天记事如何置顶记事本   天天记事如何置顶记事本?记录比较的重要的东西经常会用到?小伙伴们不妨把记事本置顶,这样要打开记事本时不用一本一本翻,那么小伙伴们知道怎么置顶记事本吗?现在小编就教大家天天记事如何置顶记事本。 1)点击打开天天记事,点击长按你要置顶的记事本; 2)点击下方的即可。
乐云记事怎么置顶记事本?   有些记事要时刻记住很特殊?对于这些记事小伙伴们可以置顶,这样不管什么时候大家记事本都会出现在最上面,那么怎么置顶记事本呢?现在小编就教大家乐云记事怎么置顶记事本。 打开乐云记事,点击长按要置顶的记事,然后点击上方的即可。
(三)用SQL来合并查询 你是否曾经为了得到所需要的信息而反复查询?子选择,也被称为子查询,也许正是你在寻找的。SQL的这项功能使你可以在一组结果中查询,创造性地给结果组加以限定,或是在向数据库的单一调用中将结果与一个无关系的查询做相关。这篇文章中我将给出几个子选择的例子并就何时使用他们进行讨论。 在一个结果组中...
(八)数值数据类型 SQL92标准定义了若干种基本数据类型,它们是SQL数据库中各种数据类型的基础。在《字符串数据类型》一文中,我们已经详细讨论了SQL92标准所定义的字符串数据类型。现在,我们来进一步讨论数值数据类型。 你最好开始尝试使用不同数据库实现方法并在它们传递数据,这样可以加深你对数值数据类型的理解。本文将给...

经验教程

286

收藏

58
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部