明細行変更ボタン [VB]

Visual Basic ADO.NET [Community Express]

行確認ボタン・行追加ボタンクリック処理

FormJuchuEntryクラスに、選択明細行変更ボタンクリック処理と明細行変更完了ボタンクリック処理を実装します。

サンプルプログラム

受注エントリー画面

【選択明細行変更ボタンクリック処理】

  • CurrentRow.Indexプロパティで明細行インデックスを取得
  • 元の行に戻すために Private変数updateMeisaiIndexに保存
  • 明細行確認ボタンと明細行変更完了ボタンをクリック可能に設定
  • 明細行追加ボタン、選択行削除ボタン、選択明細行変更ボタンをクリック不可に設定

選択明細行変更完了ボタンクリック処理

  • バインディングソースから変更前明細行を削除し、変更行を明細行リストの元の位置に追加
  • 受注合計金額を再計算
  • 明細行入力エリアをクリア
  • 商品コードにフォーカス
  • ボタンのクリック可能・不可設定

ソースリストの枠内をクリックすると全選択できます。

    '*******************************************************
    ' 選択明細行変更ボタンクリック処理
    '*******************************************************

    Private Sub BtnGyoHenko_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles BtnGyoHenko.Click

        Try
            ' 選択明細行の取得
            Dim gyo As ClsInsertDetailRow
            gyo = meisaiList(DgvMeisai.CurrentRow.Index)
            ' 画面項目にセット
            TxtShohinCode.Text = gyo.ShohinCode
            NudSuryo.Value = gyo.JuchuSuryo
            LblShohinMeisho.Text = gyo.ShohinMeisho
            LblJuchuTanka.Text = CStr(gyo.JuchuTanka)
            LblJuchuKingaku.Text = CStr(gyo.JuchuKingaku)
            ' 変更行のインデックス保存
            updateMeisaiIndex = DgvMeisai.CurrentRow.Index
            ' 商品コードにフォーカス
             TxtShohinCode.Focus()
            ' 明細行変更完了ボタン押下可能
            BtnGyoHenkoKanryo.Enabled = True
            ' 明細行確認ボタン押下可能
            BtnGyoKakunin.Enabled = True
            ' 明細行追加ボタン押下不可
            BtnGyoTsuika.Enabled = False
            ' 選択明細行削除ボタン押下不可
            BtnGyoSakujo.Enabled = False
            ' 選択明細行変更ボタン押下不可
            BtnGyoHenko.Enabled = False
        Catch ex As Exception
            MessageBox.Show(ex.ToString, "例外発生")
        End Try

    End Sub

    '*******************************************************
    ' 明細行変更完了ボタンクリック処理
    '*******************************************************
    Private Sub BtnGyoHenkouKanryo_Click(ByVal sender As System.Object, _
         ByVal e As System.EventArgs) Handles BtnGyoHenkoKanryo.Click

        Try
            ' バインディングソースから変更前明細行を削除
            bindingSrc.RemoveAt(updateMeisaiIndex)
            ' 受注明細空行生成
            Dim dr As DataRow
            dr = ClsInsertDetailRow.CreateDataRow
            ' 入力データセット
            dr("商品コード") = TxtShohinCode.Text
            dr("受注数量") = NudSuryo.Value
            ' 変更行を明細行リストの元の位置に追加
            Dim meisaiGyo As New ClsInsertDetailRow(dr)
            bindingSrc.Insert(updateMeisaiIndex, meisaiGyo)
            ' 受注合計金額を計算
            Dim sum As Integer = 0
            For i As Integer = 0 To meisaiList.Count - 1
                sum += meisaiList(i).JuchuKingaku
            Next
            LblGokeiKingaku.Text = sum.ToString("#,##0")
            ' 明細行クリア
            TxtShohinCode.Text = Nothing
            LblShohinMeisho.Text = Nothing
            NudSuryo.Value = 1
            LblJuchuTanka.Text = Nothing
            LblJuchuKingaku.Text = Nothing
            ' 商品コードにフォーカス
            TxtShohinCode.Focus()
            ' 明細行がある時のボタンの活性化
            If meisaiList.Count> 0 Then
                ' 選択明細行削除ボタン押下可能
                BtnGyoSakujo.Enabled = True
                ' 選択明細行変更ボタン押下可能
                BtnGyoHenko.Enabled = True
            End If
            ' 明細行変更完了ボタン押下不可
            BtnGyoHenkoKanryo.Enabled = False
            ' 明細行確認ボタン押下可能
            BtnGyoKakunin.Enabled = True
            ' 明細行追加ボタン押下可能
            BtnGyoTsuika.Enabled = True
            ' 選択明細行削除ボタン押下可能
            BtnGyoSakujo.Enabled = True
            ' 選択明細行変更ボタン押下可能
            BtnGyoHenko.Enabled = True
            ' 変更行のインデックスクリア
            updateMeisaiIndex = -1
        Catch ex As ShohinCodeException
            ' 商品コードエラー処理
            MessageBox.Show(ex.Message, "商品コードエラー")
            ' 商品コードにフォーカス
            TxtShohinCode.Focus()
        Catch ex As Exception
            ' その他例外が発生した時の処理
            MessageBox.Show(ex.ToString, "例外発生")
        End Try

    End Sub