お世話になります。 初心者剣道です。
今、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