受注エントリー明細行クラス
受注明細1行分クラスのClsInsertDetailRowは、入力した1行分のデータを明細行リストに追加し、データグリッドビューに表示できるようにするためのクラスです。
明細入力データ管理クラスの実装
ClsInsertDetailRowクラスは、基本クラス(基底クラス)ClsDetailRowBaseを継承したクラスで、明細行追加ボタンを押したときに、入力データをClsInsertDetailRowから明細行リストに追加し、データグリッドビューに表示できるようにするためのクラスです。
これらのクラスに実装したプロパティとデータグリッドビューの列をバインドして、フォームに表示します。
基本クラスClsDetailRowBaseは、MustInheritを付加し、抽象クラスとします。インスタンスは生成できません。
インスタンスは、派生クラスClsInsertDetailRowから生成します。
商品名称・受注単価・受注金額は、データグリッドビューに表示するためだけに使用するので、ReadOnlyプロパティにします。
エラーチェックは、Setプロパティに実装します。エラーがあれば、例外をスローします。
Option Strict On Imports System.Text.RegularExpressions '%%%%%%%%%%%%%%% 基本クラス:受注ディテール行 %%%%%%%%%%%%%%%% Public MustInherit Class ClsDetailRowBase '--------------------< メンバ:変数 >-------------------- Private shohinCodeValue As String ' 商品コード Private shohinMeishoValue As String ' 商品名称 Private juchuSuryoValue As Integer ' 受注数量 Private juchuTankaValue As Integer ' 受注単価 '======================================================= ' 機能:コンストラクタ ' 引数:なし '======================================================= Protected Sub New() ' 最初に基本クラスのコンストラクタを呼び出す MyBase.New() End Sub '------------------------------------------------------- ' プロパティ:商品コード '------------------------------------------------------- Public Property ShohinCode() As String ' Getプロパティ Get Return shohinCodeValue End Get ' Setプロパティ Set(ByVal sCode As String) ' 商品インスタンスの生成 ' 商品コードエラーチェック(エラー時は例外スロー) Dim shohin As New ClsShohin(sCode) ' 商品コードを変数メンバーにセット shohinCodeValue = sCode ' 商品名称を変数メンバーにセット shohinMeishoValue = shohin.ShohinMeisho ' 商品単価を変数メンバーにセット juchuTankaValue = shohin.Tanka End Set End Property '------------------------------------------------------- ' プロパティ:商品名称(読取専用) '------------------------------------------------------- Public ReadOnly Property ShohinMeisho() As String ' Getプロパティ Get Return shohinMeishoValue End Get End Property '------------------------------------------------------- ' プロパティ:受注数量 '------------------------------------------------------- Public Property JuchuSuryo() As Integer ' Getプロパティ Get Return juchuSuryoValue End Get ' Setプロパティ Set(ByVal value As Integer) ' 【エラーチェック】1から100なら正常 If value >= 0 And value <= 100 Then juchuSuryoValue = value Else Throw New JuchuSuryoException _ ("受注数量は1~100を入力してください") End If End Set End Property '------------------------------------------------------- ' プロパティ:受注単価(読取専用) '------------------------------------------------------- Public ReadOnly Property JuchuTanka() As Integer ' Getプロパティ Get Return juchuTankaValue End Get End Property '------------------------------------------------------- ' プロパティ:受注金額(読取専用) '------------------------------------------------------- Public ReadOnly Property JuchuKingaku() As Integer ' Getプロパティ Get Return juchuTankaValue * juchuSuryoValue End Get End Property End Class '/////////// 派生クラス:受注ディテール追加クラス //////////// Public Class ClsInsertDetailRow Inherits ClsDetailRowBase '======================================================= ' 機能:コンストラクタ ' 引数:ディテール表に追加する行データ ' 戻値:なし '======================================================= Protected Sub New(ByVal row As DataRow) ' 最初に基本クラスのコンストラクタを呼び出す MyBase.New() ' エラーチェックとデータセット ShohinCode = CStr(row("商品コード")) JuchuSuryo = CInt(row("受注数量")) End Sub End Class