回覆列表
  • 1 # 使用者990540253822

    步驟一:繪製介面。

      新建一個標準EXE工程,將其Caption屬性改為“超級記事本”,點選Icon屬性給它找個合適的Icon圖示。單擊選單“工程”-“部件”,在彈出的“部件”對話方塊裡找到Microsoft RichText Box 6.0和公共對話方塊Microsoft Common Dialog 6.0並選中它們,單擊“確定”按鈕。這時左邊的工具欄上出現了我們剛才新添的兩個控制元件了。在窗體上繪製RichText Box和Commn Dialog,其中RichText Box的大小和位置可不用理睬,我們將在程式碼中處理它,當然,有必要把它的ScrollBar屬性設為2-rtfVertical,這樣在開啟和編輯檔案時垂直捲軸才可用。

      

      步驟二:編輯選單。

      按Ctrl+E調出選單編輯器,我們來做如下幾個選單:

      一.檔案選單:

      檔案(第一層) mnuFile

      新建(第二層) mnuNew

      開啟(第二層) mnuOpen

      儲存(第二層) mnuSave

      - (第二層) mnuFileSep (分隔線)

      退出(第二層) mnuExit

      二.編輯選單:

      編輯(第一層) mnuEdit

      複製(第二層) mnuCopy

      剪下(第二層) mnuCut

      貼上(第二層) mnuPaste

      - (第二層) mnuEditSep (分隔線)

      全選(第二層) mnuSelecAll

      三.搜尋選單:

      搜尋(第一層) mnuSearch

      查詢(第二層) mnuFind

      查詢下一個(第二層) mnuFindOn

      四.幫助選單:

      幫助(第一層) mnuHelp

      使用說明(第二層) mnuUsage

      關於(第二層) mnuAbout

      (注:各選單項的快捷鍵請自行設定)

      

      好了,其它的選單項以後再根據需要新增。現在進入:

      

      步驟三:編寫程式碼。

      

      "宣告查詢變數

      Dim sFind As String

      "宣告檔案型別

      Dim FileType, FiType As String

      

      "初始化程式

      Private Sub Form_Load()

      "設定程式啟動時的大小

      Me.Height = 6000

      Me.Width = 9000

      End Sub

      

      "設定編輯框的位置和大小

      Private Sub Form_Resize()

      On Error Resume Next "出錯處理

      RichTextBox1.Top=20

      RichTextBox1.Left=20

      RichTextBox1.Height = ScaleHeight-40

      RichTextBox1.Width = ScaleWidth-40

      End Sub

      

      "新建檔案

      Private Sub mnuNew_Click()

      RichTextBox1.Text = "" "清空文字框

      FileName = "未命名"

      Me.Caption = FileName

      End Sub

      

      

      "開啟檔案

      Private Sub mnuOpen_Click()

      CommonDialog1.Filter = "文字文件(*.txt) *.txt RTF文件(*.rtf) *.rtf 所有檔案(*.*) *.*"

      CommonDialog1.ShowOpen

      RichTextBox1.Text = "" "清空文字框

      FileName = CommonDialog1.FileName

      RichTextBox1.LoadFile FileName

      Me.Caption = "超級記事本:" & FileName

      End Sub

      

      "儲存檔案

      Private Sub mnuSave_Click()

      CommonDialog1.Filter = "文字文件(*.txt) *.txt RTF文件(*.rtf) *.rtf 所有檔案(*.*) *.*"

      CommonDialog1.ShowSave

      FileType = CommonDialog1.FileTitle

      FiType = LCase(Right(FileType, 3))

      FileName = CommonDialog1.FileName

      Select Case FiType

      Case "txt"

      RichTextBox1.SaveFile FileName, rtfText

      Case "rtf"

      RichTextBox1.SaveFile FileName, rtfRTF

      Case "*.*"

      RichTextBox1.SaveFile FileName

      End Select

      Me.Caption = "超級記事本:" & FileName

      End Sub

      

      "退出

      Private Sub mnuExit_Click()

      End

      End Sub

      

      "複製

      Private Sub mnuCopy_Click()

      Clipboard.Clear

      Clipboard.SetText RichTextBox1.SelText

      End Sub

      

      "剪下

      Private Sub mnuCut_Click()

      Clipboard.Clear

      Clipboard.SetText RichTextBox1.SelText

      RichTextBox1.SelText = ""

      End Sub

      

      "全選

      Private Sub mnuSelectAll_Click()

      RichTextBox1.SelStart = 0

      RichTextBox1.SelLength = Len(RichTextBox1.Text)

      End Sub

      

      "貼上

      Private Sub mnuPaste_Click()

      RichTextBox1.SelText = Clipboard.GetText

      End Sub

      

      "查詢

      Private Sub mnuFind_Click()

      sFind = InputBox("請輸入要查詢的字、詞:", "查詢內容", sFind)

      RichTextBox1.Find sFind

      End Sub

      

      "繼續查詢

      Private Sub mnuFindOn_Click()

      RichTextBox1.SelStart = RichTextBox1.SelStart + RichTextBox1.SelLength + 1

      RichTextBox1.Find sFind, , Len(RichTextBox1)

      End Sub

      

      "使用說明

      Private Sub mnuReadme_Click()

      On Error GoTo handler

      RichTextBox1.LoadFile "Readme.txt", rtfText "請寫好Readme.txt檔案並存入程式所在資料夾中

      Me.Caption = "超級記事本:" & "使用說明"

      Exit Sub

      handler:

      MsgBox "使用說明文件可能已經被移除,請與作者聯絡。", vbOKOnly, " 錯誤資訊"

      End Sub

    "關於

      Private Sub mnuAbout_Click()

      End Sub

      

      "設定彈出式選單(即在編輯框中單擊滑鼠右鍵時彈出的動態選單)

      Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

      If Button = 2 Then

      PopupMenu mnuEdit, vbPopupMenuLeftAlign

      Else

      Exit Sub

      End If

      End Sub

      

      "防止在切換輸入法時字型自變(感謝王必成先生提供此方案)

      Private Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer)

      If KeyCode = vbKeySpace Then

      RichTextBox1.SelFontName = CommonDialog1.FontName

      End If

      End Sub

      

      當然,這樣的記事本還比較粗糙,我們還需要做些工作,請看下一章。

      

      

      第二章 美化程式介面

      

      多數字處理軟體都有工具欄和狀態列。工具欄和狀態列除了能美化我們的程式使其更具有專業性質外,還給使用者帶來操作上的便利。現在我們就來做一做這兩樣東西。

      

      一.工具欄

      (一)製作工具欄

      單擊“工程”-“部件”,選中Microsoft Windows Common Control 6.0並確定。這時,我們要用到的控制元件就出現在左邊的工具欄上了。

      要做工具欄,首先需要一個叫ImageList的控制元件來裝載影象。在程式介面上新增它,然後右鍵單擊此控制元件,左鍵單擊“屬性”,彈出“屬性頁”對話方塊的“影象”,再單擊“插入圖片”就可以一次性裝載圖片了(如不滿意,以後還可以新增)。圖片可在C:\Microsoft Visual Studio\Common\Graphics\Bitmaps\TlBr_W95下選擇(這裡假設你的VB安裝在C盤下)。注意了:在插入圖片時給每一張圖片註明關鍵字,以便在引用圖片時不至於混亂。如插入“新建”的圖片,我們在“關鍵字”欄註明“New”。

      圖片有了,接下來在程式介面新增工具欄(ToolBar)。新增後工具欄就出現在選單下面,右鍵單擊它,選擇“屬性”,在彈出的“屬性頁”對話方塊中的“通用”項作些設定,主要如下兩項:

      1.“影象列表”:選擇ImageList1

      2.“樣式”:根據喜愛選擇1-trbStandard或者2-trbFlat

      繼續點選“屬性頁”的“按鈕”選項,插入若干按鈕。按鈕有多種樣式,請根據需要設定。這裡請一定注意:每一個與使用者操作有關的按鈕都必須註明關鍵字、裝載圖片,如“新建”按鈕,在“關鍵字”項註明“新建”,在“影象”項鍵入“New”(即ImageList1中的圖片關鍵字),需要的話還可以在“工具提示文字”項填入適當的提示語。

      Private Sub ToolBar1_ButtonClick(ByVal Button As MSComctlLib.Button)

      On Error Resume Next "出錯處理

      Select Case Button.Key "按關鍵字選擇

      Case "新建"

      mnuNew_Click "等於選單項“新建”被單擊

      Case "開啟" "等於選單項“開啟”被單擊

      mnuOpen_Click

      End Select

      End Sub

      

      完成後試執行一下我們的程式,我們發現,有了工具欄之後,程式變得漂亮多了,只是有一個問題:開啟一個較長的文件後,編輯框的下拉捲軸向上的箭頭不見了。原因是:工具條佔用一定的空間。解決方法:將“設定編輯框的位置和大小”中的RichTextBox1.Top = 20 和 RichTextBox1.Height = Me.ScaleHeight - 40分別改為RichTextBox1.Top = 380,RichTextBox1.Height = Me.ScaleHeight - 400即可。

      

      二.狀態列

      (一)製作狀態列

      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控制元件編寫程式碼:

      

      Private Sub Timer1_Timer()

      If StatusBar1.Panels(3).Text < > CStr(Time) Then

      StatusBar1.Panels(3).Text = Time

      End If

      End Sub

      

      例三:當編輯框的文字發生變化時讓第一個窗格顯示:“正在編輯文件:檔名”。

      Private Sub RichTextBox1_Chang()

      StatusBar1.Panels(1).Text = "正在編輯文件:" & CommonDialog1.FileName

      End Sub

      

      辛苦了那麼久,我們現在已經擁有一個象模象樣的記事本了。這個記事本由於用了RichText控制元件,理論上它能開啟和編輯任意大的文件,使用起來的確比Windows自帶的記事本方便得多。當然,還有一些其它的功能需要新增和完善,這就靠你慢慢去完成了。

  • 中秋節和大豐收的關聯?
  • 請從經濟、軍事、工業、政治等角度來分析美國有哪些強大的方面?