程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 跟我學做記事本

跟我學做記事本

編輯:VB綜合教程
用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).Text<>CStr(Time)Then
  StatusBar1.Panels(3).Text=Time
  EndIf
  EndSub
  
  例三:當編輯框的文本發生變化時讓第一個窗格顯示:“正在編輯文檔:文件名”。
  PrivateSubRichTextBox1_Chang()
  StatusBar1.Panels(1).Text="正在編輯文檔:"&CommonDialog1.FileName
  EndSub
  
  辛苦了那麼久,我們現在已經擁有一個象模象樣的記事本了。這個記事本由於用了RichText控件,理論上它能打開和編輯任意大的文檔,使用起來的確比Windows自帶的記事本方便得多。當然,還有一些其它的功能需要添加和完善,這就靠你慢慢去完成了。->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved