VB を学ぶ皆さんにとって、メモ帳のことを知らないと非常に困惑するでしょう。CG は今日、Kivi からの課題を受け取りました。VB の宿題として、コードが理解できるメモ帳プログラムを作成する必要があります。それに加えて、発表もしなければならないとのことです。この先生は本当に人を困らせるものですね。とにかく、CG はしばらく会っていなかったので、ソースコードを添付します。必要な方は自由にお使いください。初心者のようなものには必要ですから。
簡単な説明:メモ帳プログラムは、VB で Common Dialog Control コントロールを使用して、ファイルを開く、フォントを開く、ファイルを保存するダイアログの機能を要求します。テキストの作成、変更、編集、保存の機能を実現します。これは、私たちが普段使っているテキストエディタでもあります。
ソースコードの場所: http://www.lidaren.com/code/VBnotepad.zip
以下は一部の参考コードです:
Dim Changed As Boolean ' 変更されたかどうか
Dim IsSave As Boolean ' 保存されたかどうか
Dim FileName As String ' ファイル名
Dim TxtBefore As String ' 変更前のテキスト、元に戻す操作に使用
' フォームの読み込み
Private Sub Form_Load()
Clipboard.Clear
End Sub
' フォームの終了
Private Sub Form_Unload(Cancel As Integer)
' 終了ボタンのイベント処理と同じ
If Changed = True Then
result = MsgBox ("編集ウィンドウを閉じようとしています。変更内容を保存しますか?", vbYesNoCancel, "確認") ' 保存するかどうかを確認
If result = vbYes Then
MenuStripSave_Click ' 保存イベントのメソッドを直接呼び出す
ElseIf result = vbNo Then
Unload Me ' フォームをアンロード
End If
Else
Unload Me
End If
End Sub
' 情報
Private Sub MenuStripAbout_Click()
MsgBox "Powered By CG", vbOKOnly, "情報"
End Sub
' すべて選択
Private Sub MenuStripSelectAll_Click()
RTBox.SelStart = 0 ' テキストの先頭から選択を開始
RTBox.SelLength = Len (RTBox.Text) ' 選択の長さ = テキストの最大長さ
End Sub
' 元に戻す
Private Sub MenuStripUndo_Click()
RTBox.Text = TxtBefore ' テキストを元に戻す
End Sub
' テキストボックスのテキストが変更された時
Private Sub RTBox_Change()
Changed = True 'Change イベントが発生
If FileName = "" Then ' ファイル名が空の場合、未保存
FileName = "未保存"
Me.Caption = FileName ' タイトルを変更
End If
If InStr(Me.Caption, "*") = 0 Then
Me.Caption = FileName + "*" ' 星印を付ける
End If
End Sub
' フォームのサイズ変更
Private Sub Form_Resize()
RTBox.Width = Form1.Width - 40 ' テキストボックスのサイズを変更
RTBox.Height = Form1.Height - 40
End Sub
' コピー
Private Sub MenuStripCopy_Click()
Clipboard.Clear ' クリップボードをクリア
Clipboard.SetText RTBox.SelText
End Sub
' 切り取り
Private Sub MenuStripCut_Click()
Clipboard.Clear
Clipboard.SetText RTBox.SelText
RTBox.SelText = "" ' 選択したテキストをコピーして削除
End Sub
' 削除
Private Sub MenuStripDelete_Click()
RTBox.SelText = "" ' テキストを直接削除
End Sub
' 終了
Private Sub MenuStripExit_Click()
If Changed = True Then
result = MsgBox ("編集ウィンドウを閉じようとしています。変更内容を保存しますか?", vbYesNoCancel, "確認") ' 確認
If result = vbYes Then
MenuStripSave_Click ' 保存イベントのコードを呼び出す
ElseIf result = vbNo Then
Unload Me
End If
Else
Unload Me ' 変更がない場合はフォームを直接アンロード
End If
End Sub
' フォントダイアログ
Private Sub MenuStripFont_Click()
ComDiag.Flags = 1
ComDiag.ShowFont ' フォントダイアログを表示
RTBox.Font.Bold = ComDiag.FontBold ' フォントのプロパティを設定
RTBox.Font.Italic = ComDiag.FontItalic
RTBox.Font.Name = ComDiag.FontName
RTBox.Font.Size = ComDiag.FontSize
RTBox.Font.Strikethrough = ComDiag.FontStrikethru
RTBox.Font.Underline = ComDiag.FontUnderline
End Sub
' 新規作成
Private Sub MenuStripNew_Click()
Dim result As Integer ' ダイアログの結果を取得するための int を定義
If Changed = True Then
result = MsgBox ("新しい編集ウィンドウを作成しようとしています。変更内容を保存しますか?", vbYesNoCancel, "確認")
If result = vbYes Then
MenuStripSave_Click
End If
Else
FileName = "未保存"
Me.Caption = FileName
RTBox.Text = "" ' テキストボックスをクリア
End If
End Sub
' 開く
Private Sub MenuStripOpen_Click()
ComDiag.Filter = "*.*"
ComDiag.ShowOpen
If ComDiag.FileName <> "" Then ' ファイルが選択された場合
FileName = ComDiag.FileName
RTBox.Text = ""
RTBox.LoadFile FileName
Me.Caption = FileName ' タイトルを変更
End If
End Sub
' 貼り付け
Private Sub MenuStripPaste_Click()
RTBox.SelText = Clipboard.GetText ' クリップボードの内容を貼り付ける
End Sub
' 保存
Private Sub MenuStripSave_Click()
Dim result As Integer
If IsSave = True Then
RTBox.SaveFile FileName, rtfText ' すでに保存されている場合、結果を保存
If InStr (Me.Caption, "*") <> 0 Then ' タイトルに * があるか?
Me.Caption = Replace (Me.Caption, "*", "") ' 置換
End If
Else
ComDiag.Filter = "*.*"
ComDiag.DialogTitle = "保存" + FileName
ComDiag.ShowSave ' 保存ダイアログ
If FileName <> "" Then
FileName = ComDiag.FileName
RTBox.SaveFile FileName, rtfText ' 結果を保存する TEXT 形式
IsSave = True ' 保存済み
Me.Caption = FileName
If InStr(Me.Caption, "*") <> 0 Then
Me.Caption = Replace (Me.Caption, "*", "") ' 星印を削除
End If
End If
End If
End Sub
' 名前を付けて保存
Private Sub MenuStripSaveAs_Click()
ComDiag.Filter = "*.*"
ComDiag.DialogTitle = "名前を付けて保存..."
ComDiag.ShowSave
If FileName <> "" Then
FileName = ComDiag.FileName
RTBox.SaveFile FileName, rtfText
IsSave = True
Me.Caption = FileName
If InStr(Me.Caption, "*") <> 0 Then
Me.Caption = Replace(Me.Caption, "*", "")
End If
End If
End Sub
がんばって、Kivi!!