none
VB6.0 vaSpread表示の問題です。 RRS feed

  • 質問

  • お世話になります。 初心者剣道です。
    今、VB6.0で他人作ったコードの修正をしています。

    画面としては、

    vaSpread(0),vaSpread(1),vaSpread(2), vaSpreadDisp   四個、

    "追加"ボタン三個。index 0,1,2

    目的は、"追加"ボタンを押された時、

    vaSpread(0),vaSpread(1),vaSpread(2), 三つのSPREADで選択されたリストを

    vaSpreadDisp(vaSpreadコントロール)(表示一覧かな)で追加して表示できるようにしたいです。

     

    vaSpread(0)のプロパティ:operationMode:3-OperationModeSingle

    vaSpread(1),vaSpread(2), のプロパティ:operationMode:4-OperationModeMulti 

     

    vaSpread(0)で、元々4行入っています。選択されたリストは、追加ボタンを押して、

    この4行のリストが、vaSpreadDispで無かった場合、追加する。

    有った場合、もちろんこの4行の中一行しか入ってないです。

    リスト内容が同じなら、何もしない。

    リスト内容が違うなら、追加しなくて、更新したいです。

    如何したら、解決できるのか、ご存知でしたら御教授願います。

     

    Private mintInfRows             As Integer          '案内件数
    Private mintSelectRows       As Integer          '選択件数

    Private mintAllRows             As Integer          '設定済件数

    '**************************************************************************************************
    ' イベント説明 : 追加ボタンクリック時処理
    ' イベント名  : Sub cmdAdd_Click
    '**************************************************************************************************
    Private Sub cmdAdd_Click(Index As Integer)

        Dim i            As Integer         ' 選択前一覧から選択されている行番号を配列にセット
        Dim retRow       As Long            ' 行番号の返り
        Dim Arrays()     As Long            ' 行番号をセットする配列

        Dim j, k, l                                          As Integer        ' 選択後一覧に移動させる
        Dim blnRet                                          As Boolean       ' GetTextの返り値 - 意味無し
        Dim varRetL1, varRetL2, varRetL3, varRetL4    As Variant        ' GetTextで取得した値(選択前一覧)
        Dim varRetR1, varRetR2, varRetR3, varRetR4    As Variant        ' GetTextで取得した値(選択後一覧)
        Dim blnChk                                            As Boolean       ' 値比較チェックフラグ

        '選択項目数を取得
       
        mintSelectRows = vaInf(Index).SelModeSelCount
        'If mintSelectRows <> 0 Then            

         '   ReDim Arrays(1 To mintSelectRows) As Long
        'Else
         '   Exit Sub
        'End If
        
           retRow = 0
        i = 0
        '選択されている行番号を配列にセット
        Do
            retRow = vaSpread(Index).GetMultiSelItem(retRow)
            If retRow = -1 Then
                Exit Do
            End If

            i = i + 1
            Arrays(i) = retRow
        Loop

        For j = 1 To mintSelectRows
            '選択行の値を取得
            blnRet = vaSpread(Index).GetText(1, Arrays(j), varRetL1)
            blnRet = vaSpread(Index).GetText(2, Arrays(j), varRetL2)
            blnRet = vaSpread(Index).GetText(3, Arrays(j), varRetL3)
            blnRet = vaSpread(Index).GetText(4, Arrays(j), varRetL4)

            blnChk = False
            For l = 1 To mintAllRows + 1
                '選択後一覧の項目と比較(既に存在する場合はフラグ=True)
                blnRet = vaSpreadDisp.GetText(1, l, varRetR1)
                blnRet = vaSpreadDisp.GetText(2, l, varRetR2)
                blnRet = vaSpreadDisp.GetText(3, l, varRetR3)
                blnRet = vaSpreadDisp.GetText(4, l, varRetR4)
    ''            If varRetL1 = varRetR1 And varRetL2 = varRetR2 And varRetL3 = varRetR3 And varRetL4 = varRetR4 Then
                If varRetL1 = varRetR1 And varRetL3 = varRetR3 And varRetL4 = varRetR4 Then
                    blnChk = True
                End If
    '            If ((varRetL4 = "1" And varRetR4 = "3") Or (varRetL4 = "3" And varRetR4 = "1") Or (varRetL4 = "1" And varRetR4 = "1") Or (varRetL4 = "3" And varRetR4 = "3")) Then
    '                blnChk = True
    '            End If
            Next
            If blnChk = False Then
                'フラグ=Falseの場合に新規追加
                mintAllRows = mintAllRows + 1
                mblnEdit = True
                cmdCommit.Enabled = True

                With vaSpreadDisp

                    'MAX制御追加 04/06/05 ADD Y.Yoshida
                    If mintAllRows > .MaxRows Then
                        .MaxRows = mintAllRows
                    End If

                    .SetText 1, mintAllRows, varRetL1
                    .SetText 2, mintAllRows, varRetL2
                    .SetText 3, mintAllRows, varRetL3
                    .SetText 4, mintAllRows, varRetL4
                End With
            End If
        Next
       
        ' 選択前一覧の選択を解除
        vaInf(Index).Action = 29

        cmdCommit.SetFocus

    End Sub

     

     

     

     

     

     

     

     

    2008年2月7日 11:54

回答