画面設計 project.mk Abook バージョン
7.0.0

【支出タブ】

レイアウト

1.支出情報なし
<概要>
  • 支出情報を登録する画面
  • メインフォームの初期表示時にDBファイルから読み込んだ支出情報を表示する.
  • DBファイルから読み込んだ支出情報が0件の場合,支出DGVは0行とする.
  • 支出情報を初期表示するとき,支出DGVは最終行までスクロールして,日付列のセルを選択状態とする.
<支出DGVの設定>
行追加 不可
行削除 可能
ReadOnly ×
列のソート 不可
列の幅変更 不可
選択モード セル選択
スクロールバー縦のみ
2.支出情報あり

画面項目

No. 名称 ID テキスト 属性 align 種別 備考
1 登録ボタン BtnEntry 登録 Button
2 追加ボタン BtnAddRow Button
3 支出DGV DgvExpense DataGridView
3-1 日付列 ColDate 日付 文字列 DataGridViewTextBoxColumn YYYY-MM-DD
3-2 名称列 ColName 名称 文字列 DataGridViewTextBoxColumn
3-3 種別列 ColType 種別 文字列 DataGridViewTextBoxColumn 種別※1のみ
3-4 金額列 ColCost 金額 数値 DataGridViewTextBoxColumn Z,ZZ9
3-5 備考列 ColNote 備考 文字列 DataGridViewTextBoxColumn

イベント

初期表示
  • DBファイルから読み込んだ支出情報を支出DGVへ表示する.
  • DBファイルから読み込んだ支出情報が0件の場合,支出DGVは0行とする.
  • 支出DGVの最終行までスクロールして,最終行の日付列のセルを選択状態とする.
登録ボタン押下
  • 支出DGVが0行の場合,警告ダイアログを表示して処理を終了する.
    • 警告:レコードが1件もありません.
  • 支出DGVの支出情報をDBファイルへ出力する(すべての列が空白でない行のみを対象とする).
  • DBファイルへの書き出しに失敗した場合,エラーダイアログを表示して処理を終了する.
  • このとき,エラーとなった行まで支出DGVをスクロールして,該当行を選択状態とする.
    No. 条件 メッセージ
    1 支出DGVの日付列の値が日付形式でない 日付が正しくありません。
    2 支出DGVの種別列の値が不正 種別が正しくありません。
    3 支出DGVの金額列の値が数値でない 金額が正しくありません。
    4 支出DGVの金額列の値がマイナス 金額がマイナスです。
    5 支出DGVの金額列の値が大き過ぎる 金額が大き過ぎます。
    6 DBファイルへの書き出しに失敗する(DBファイルがロックされているなど) DBファイル登録エラー: {0}
    3-1.登録ボタンを押下
    3-2.エラーダイアログ
    3-3.該当行が選択状態となる
  • DBファイルへの書き出しが成功した場合,各タブを初期化してOKダイアログを表示する.
    • 登録完了:正常に登録しました.
追加ボタン押下
  • 支出DGVの末尾に新しく30行追加する.
  • 新しく追加された行の日付列にはシステム日付(YYYY-MM-DD)を初期値として設定する.
    4-1.追加ボタン押下
    4-2.行が追加される
支出DGVのセル編集終了(CellEndEdit)
  • 編集したセルが名称列ならば,種別と金額の自動補完を行う.
  • 編集したセルが種別列ならば,金額の自動補完を行う.
  • 入力された名称が既に支出情報に登録されているなら,種別もそれと同じだろうという推測に基づく.
  • 金額は名称と種別の組み合せで直近3件の金額のどれかの可能性が高いだろうという推測に基づく.
  • 種別の具体的な補完手順は以下の通り.
    1. DBファイルから読み込んだ支出情報で編集したセルの名称と同じ支出情報をすべて取得する.
      ※支出DGVに現在表示されている支出情報でないことに注意
    2. 取得した支出情報が0件の場合,編集したセルの行の種別列を空白に設定する.
    3. 取得した支出情報が1件以上の場合,それらを種別ごとにグループ分けする.
    4. グループ分けした中で件数が最大の種別を編集したセルの行の種別列に設定する.
    5. 件数が最大の種別が複数存在する場合,それらをすべて空白で区切って編集したセルの行の種別列に設定する.
  • 種別の自動補完の例を以下に示す.
    5-1.DBファイルの支出情報
    5-2-1.「おにぎり」は「食費」が1件のみ
    5-2-2.「食費」で補完される
    5-3-1.「カレー」は「食費」が2件,「外食費」が1件
    5-3-2.「食費」で補完される
    5-4-1.「うどん」は「食費」と「外食費」が2件ずつ
    5-4-2.「食費」と「外食費」が空白区切りで補完される
  • 金額の具体的な補完手順は以下の通り.
    1. DBファイルから読み込んだ支出情報のうち,編集したセルの名称 + 種別の組み合せに当てはまる支出情報をすべて取得する.
      ※支出DGVに現在表示されている支出情報でないことに注意
    2. 取得した支出情報が0件の場合,編集したセルの行の金額列を空白に設定する.
    3. 取得した支出情報が1件以上の場合,日付の新しい順に上位3件の金額を取得する.
    4. 取得した金額で重複は一つにまとめる(SQLでのDISTINCT).
    5. 取得した金額を"/"で区切って編集したセルの行の金額列に設定する.
      ※金額はカンマ編集する
  • 金額の自動補完の例を以下に示す.
    6-1.DBファイルの支出情報
    6-2-1.「おにぎり」+「食費」は1件のみ
    6-2-2.「100」で補完される
    6-3-1.「おにぎり」+「外食費」は2件
    6-3-2.日付の新しい順に「300/200」で補完される
    6-4-1.「カレー」+「外食費」は4件
    6-4-2.日付の新しい順の3件で補完される
    6-5-1.「うどん」+「食費」は直近3件の金額がすべて同じ
    6-5-2.一つにまとめて「100」で補完される
    6-6-1.「うどん」+「外食費」は1件目と3件目の金額が同じ
    6-6-2.同じ金額は一つにまとめられる
支出DGV上でのキー押下(KeyDown)(Ctrl+V)
  • 押下されたキーがCtrl+V(ペースト)の場合,現在選択されてるセルにクリップボードの値をペーストする.
  • 現在選択されているセルが名称列の場合,ペースト終了後に種別と金額の自動補完を行う.
  • 現在選択されているセルが種別列の場合,ペースト終了後に金額の自動補完を行う.
支出DGV上でのキー押下(KeyDown)(Ctrl+8,Ctrl+0)
  • 押下されたキーがCtrl+8かCtrl+0の場合,範囲選択されているセルの金額列のそれぞれを税込価格に置換して表示する.
  • Ctrl+8の場合は税込8%.
  • Ctrl+0の場合は税込10%.
  • 税込計算のとき小数点以下は四捨五入する.
  • 空白や不正な値の金額セルは無視する.
  • 範囲選択されているセルに金額列が含まれていない場合は何もしない.
7-1-1.Ctrl+8
7-1-2.税込金額(8%)を計算して表示
7-2-1.Ctrl+0
7-2-2.税込金額(10%)を計算して表示
支出DGV上でのキー押下(KeyDown)(Ctrl+T)
  • 押下されたキーがCtrl+Tの場合,範囲選択されているセルの金額列の値を合計して表示する.
  • 空白や不正な値の金額セルは合計に含めない.
  • 範囲選択されているセルに金額列が含まれていない場合の合計は0円とする.
8-1-1.範囲選択されているセル
8-1-2.選択範囲内の金額合計を表示
8-2-1.金額列が含まれないとき
8-2-2.合計は0円
ツールチップの表示
  • 名称列にマウスオンしたとき,ツールチップを表示する.
  • ツールチップには支出情報の備考を表示する.
  • 備考のある行は背景色を変更する(#DEFCE7).
9.ツールチップに備考を表示