予定といってもカテゴリのようなものがあります。カテゴリを作成して表示順も変更できるようにしました。

最初に設定したカテゴリもファイルに保存できるようにしたいので、ファイルに保存する部分を変更します。Docというクラスを作成して、このなかにDataのリストとカテゴリの文字列のリストを保存できるようにします。

つぎに、カテゴリを設定するフォームを表示させます。

リストボックスに設定したカテゴリ名が並びます。ボタンをおすと新規カテゴリ、既存のカテゴリ名の変更、削除ができます。ドラッグ&ドロップをすると表示の順番を変更することができます。

カテゴリは文字列だけでなく表示の順番も設定できるようにします。そこでCategoryItemクラスを作成しました。

フォームがロードされたら、コンボボックスに既存のカテゴリ名を挿入します。IDは表示順を管理する役目も持たせています。[追加]ボタンを押すと新しいカテゴリ名が追加されるとともにIDも付与されます。またカテゴリが削除された場合、メインのフォーム側でもどれが削除されたかわかるように、削除されたIDもリストに格納しています。

項目がドラッグ&ドロップされたら表示順を変更します。List型のフィールド変数に格納されている順番も変更します。

それではメインフォームの[カテゴリ編集]ボタンがクリックされたときの処理を示します。

最初にEditCategoryFormクラスからフォームを生成します。そしてコンボボックスに既存のカテゴリ名を挿入して、フォームが表示されたときにデータが属するカテゴリが選択されるように変数に値もセットします。

カテゴリ設定フォームで[編集完了]がクリックされたら、削除されたカテゴリとカテゴリの順番の変更を調べます。これはDataクラスの値を書き換える必要があるため、情報を集めておく必要があります。(コメントが書かれている部分)

それからカテゴリの機能を追加するということは、メインフォームで[新規][編集]がクリックされたときの処理も変更する必要があるということを意味しています。

これは項目を追加したり編集するときのフォームのクラスです。ロードされたときに必要な処理が追加されました。

以下はRegistFormクラスにデータをセットしたりデータを取得するメソッドです。