§14 予定表3 | プログラミング実習 |
【5】 予定データの登録
予定データをスケジュールデータに登録(追加)する。日付データと予定データを区切り文字で連結して、スケジュールデータを記憶している変数SDataに追加する。
操作 15 登録ボタンTorokuButtonのクリックイベントに対応するメソッドを次のように作成する。
Private Sub TorokuButton_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles TorokuButton.Click
Dim work(2) As String
Dim hizuke As String, pt(3) As Integer
hizuke = "?1" & txtHizuke.Text.Substring(0,
10) '検索する日付データ
pt(1) = SData.IndexOf(hizuke) '日付検索
If pt(1) <> -1 Then
pt(2) = SData.IndexOf("?2",
pt(1)) 'データ検索
pt(3) = SData.IndexOf("?3",
pt(2)) '終端(終わり)検索
work(1) = SData.Substring(0,
pt(1)) '前半部取り出し
work(2) = SData.Substring(pt(3)
+ 2) '後半部取り出し
SData = work(1) & work(2)
End If
'データの追加登録
SData = SData & hizuke
SData = SData & "?2" & txtMemo.Text
& "?3"
lblHenko.Text = "変更なし"
End Sub
予定データを表示するメソッドScheduleDataDisplayと同じように、データの区切り位置を検索する。"?1","?2","?3"の位置をそれぞれpt(1),pt(2),pt(3)に記憶する。
例えば、2008/12/02(hizuke="?12008/12/02")を検索する。
01234567890123 4 5 6 7 8 9012345678901234567 8 9 0 1 2345 67890123456789012 3 4 ?12008/12/01?2 今日の予定 123?3?12008/12/02?2 今日の予定abc ?3?12008/12/03?2今日の…
pt(1)=24、pt(2)=36、pt(3)=46である。前半部は先頭から24文字分、後半部は48番目から最後までである。work(1), work(2)はそれぞれ次のようになる。
work(1)="?12008/12/01?2今日の予定123?3"
work(2)="?12008/12/03?2今日の … 今日の予定***?3"
この2つのデータを連結すると検索した日付のデータが取り除ける。このスケジュールデータの最後に新しいデータを追加すれば、最新のスケジュールデータとなる。スケジュールデータは、日付順に並べておく必要はない。
次に、予定データを変更すると「変更あり」と表示されるようにする。
操作 16 テキストボックスtxtMemoの変更イベントに対応するメソッドを次のように作成する。
Private Sub txtMemo_TextChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles txtMemo.TextChanged
lblHenko.Text = "変更あり"
End Sub
【6】 メニューバーの処理
メニューバーを選択するとそれぞれの機能が働くようにプログラムを追加する。
○ バージョン表示とプログラム終了
操作 17 バーションを表示するため、メニューバーのバージョンに対応するメソッドを次のように作成する。メニューバーの[バージョン(V)]をダブルクリックするとメソッドの定義部が表示される。
Private Sub バージョンToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles バージョンToolStripMenuItem.Click
MsgBox("Version 1.0")
End Sub
操作 18 プログラムを終了するため、メニューバーの終了に対応するメソッドを次のように作成する。メニューバーの[ファイル(F)]をクリックするとメニューが表示される。その中の[終了(X)]をダブルクリックするとメソッドの定義部が表示される。
Private Sub 終了XToolStripMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles 終了XToolStripMenuItem.Click
Me.Close()
End Sub
○ ファイル処理(開くと保存)
操作 19 予定データのファイルを開くため、メニューバーの開くに対応するメソッドを次のように作成する。メニューバーの[ファイル(F)]をクリックするとメニューが表示される。その中の[開く(O)]をダブルクリックするとメソッドの定義部が表示される。
Private Sub 開くOToolStripMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles 開くOToolStripMenuItem.Click
OpenFileDialog1.ShowDialog() '開くダイアログ表示
If OpenFileDialog1.FileName <> ""
Then 'ファイル名あり
'↓全データ読み込み
SData = My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName)
HizukeDisplay()
End If
End Sub
すべての予定データは一つの変数SDataに記憶させるので、ReadAllTextメソッドで一度にすべてを読み込む。
読み込んだ後は、日付表示のメソッドを呼び出して、予定を表示させる。
操作 20 予定データのファイルを保存するため、メニューバーの名前を付けて保存するに対応するメソッドを次のように作成する。メニューバーの[ファイル(F)]をクリックするとメニューが表示される。その中の[名前を付けて保存する(W)]をダブルクリックするとメソッドの定義部が表示される。
Private Sub 名前を付けて保存するWToolStripMenuItem_Click(ByVal sender
As System.Object, ByVal e As System.EventArgs) Handles 名前を付けて保存するWToolStripMenuItem.Click
SaveFileDialog1.ShowDialog() '保存ダイアログ表示
If SaveFileDialog1.FileName <> ""
Then 'ファイル名あり
'↓全データ追加書き込み
My.Computer.FileSystem.WriteAllText(SaveFileDialog1.FileName,
SData, True)
End If
End Sub
すべての予定データは一つの変数SDataに記憶させるので、WriteAllTextメソッドで一度にすべてを書き込む。
操作 21 ファイルのダイアログのフィルタを設定する処理を追加する。
Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
OpenFileDialog1.Filter = "スケジュール(*.txt)|*.txt|すべてのファイル(*.*)|*.*"
SaveFileDialog1.Filter = "スケジュール(*.txt)|*.txt|すべてのファイル(*.*)|*.*"
SData = "?12008/12/01?2今日の予定123?3?12008/12/02?2今日の予定abc?3?12008/12/03?2今日の予定xyz?3?12008/12/04?2今日の予定***?3" '←削除
HizukeDisplay()
End Sub
以上で完成である。
§14 予定表3 | Copyright©2008 Hiroshi Masuda |