步驟一:繪製介面。
新建一個標準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
"新建檔案
Private Sub mnuNew_Click()
RichTextBox1.Text = "" "清空文字框
FileName = "未命名"
Me.Caption = FileName
"開啟檔案
Private Sub mnuOpen_Click()
CommonDialog1.Filter = "文字文件(*.txt) *.txt RTF文件(*.rtf) *.rtf 所有檔案(*.*) *.*"
CommonDialog1.ShowOpen
FileName = CommonDialog1.FileName
RichTextBox1.LoadFile FileName
Me.Caption = "超級記事本:" & FileName
"儲存檔案
Private Sub mnuSave_Click()
CommonDialog1.ShowSave
FileType = CommonDialog1.FileTitle
FiType = LCase(Right(FileType, 3))
Select Case FiType
Case "txt"
RichTextBox1.SaveFile FileName, rtfText
Case "rtf"
RichTextBox1.SaveFile FileName, rtfRTF
Case "*.*"
RichTextBox1.SaveFile FileName
End Select
"退出
Private Sub mnuExit_Click()
End
"複製
Private Sub mnuCopy_Click()
Clipboard.Clear
Clipboard.SetText RichTextBox1.SelText
"剪下
Private Sub mnuCut_Click()
RichTextBox1.SelText = ""
"全選
Private Sub mnuSelectAll_Click()
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text)
"貼上
Private Sub mnuPaste_Click()
RichTextBox1.SelText = Clipboard.GetText
"查詢
Private Sub mnuFind_Click()
sFind = InputBox("請輸入要查詢的字、詞:", "查詢內容", sFind)
RichTextBox1.Find sFind
"繼續查詢
Private Sub mnuFindOn_Click()
RichTextBox1.SelStart = RichTextBox1.SelStart + RichTextBox1.SelLength + 1
RichTextBox1.Find sFind, , Len(RichTextBox1)
"使用說明
Private Sub mnuReadme_Click()
On Error GoTo handler
RichTextBox1.LoadFile "Readme.txt", rtfText "請寫好Readme.txt檔案並存入程式所在資料夾中
Me.Caption = "超級記事本:" & "使用說明"
Exit Sub
handler:
MsgBox "使用說明文件可能已經被移除,請與作者聯絡。", vbOKOnly, " 錯誤資訊"
"關於
Private Sub mnuAbout_Click()
"設定彈出式選單(即在編輯框中單擊滑鼠右鍵時彈出的動態選單)
Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu mnuEdit, vbPopupMenuLeftAlign
Else
End If
"防止在切換輸入法時字型自變(感謝王必成先生提供此方案)
Private Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeySpace Then
RichTextBox1.SelFontName = CommonDialog1.FontName
當然,這樣的記事本還比較粗糙,我們還需要做些工作,請看下一章。
第二章 美化程式介面
多數字處理軟體都有工具欄和狀態列。工具欄和狀態列除了能美化我們的程式使其更具有專業性質外,還給使用者帶來操作上的便利。現在我們就來做一做這兩樣東西。
一.工具欄
(一)製作工具欄
單擊“工程”-“部件”,選中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)
Select Case Button.Key "按關鍵字選擇
Case "新建"
mnuNew_Click "等於選單項“新建”被單擊
Case "開啟" "等於選單項“開啟”被單擊
mnuOpen_Click
完成後試執行一下我們的程式,我們發現,有了工具欄之後,程式變得漂亮多了,只是有一個問題:開啟一個較長的文件後,編輯框的下拉捲軸向上的箭頭不見了。原因是:工具條佔用一定的空間。解決方法:將“設定編輯框的位置和大小”中的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
例三:當編輯框的文字發生變化時讓第一個窗格顯示:“正在編輯文件:檔名”。
Private Sub RichTextBox1_Chang()
StatusBar1.Panels(1).Text = "正在編輯文件:" & CommonDialog1.FileName
辛苦了那麼久,我們現在已經擁有一個象模象樣的記事本了。這個記事本由於用了RichText控制元件,理論上它能開啟和編輯任意大的文件,使用起來的確比Windows自帶的記事本方便得多。當然,還有一些其它的功能需要新增和完善,這就靠你慢慢去完成了。
步驟一:繪製介面。
新建一個標準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自帶的記事本方便得多。當然,還有一些其它的功能需要新增和完善,這就靠你慢慢去完成了。