Есть ли у элементов в Лист Боксе имена?
Тут такая проблема у меня возникла. Есть у меня два Лист Бокса. Один это список товаров, а другой - корзина. Каждому товару присвоена цена. После того, как пользователь выберет все товары, у него должна быть возможность узнать, какова сумма заказа. Я объявил переменную sum, и во время того, как пользователь переносит товар в корзину, к этой переменной приплюсовывается цена переносимого товара (я это определяю по индексу товара в Лист Боксе). С этим все нормально, проблема в том, что если пользователь захочет удалить товар из корзины, то нужно каким-то образом отнять цену этого товара от sum (здесь-то индекс и не прокатит, так как товары добавляются в произвольном порядке).
Может Вы знаете какой-нибудь алгоритм, по которому можно сравнивать товар в корзине с товарами в списке, и, в случае совпадения, отнимать от sum цену товара из списка товаров.
А может можно каким-то образом узнать название элемента в Лист Боксе (вместо индексов использовать названия)?
Вот отрывок кода:
(General)
Dim X As String
Dim id As Integer
Dim idx As Integer
Dim z As Integer
Dim sum As Integer
Private Sub Command2_Click() (Эта функция удаляет товары из корзины)
Dim n As Integer
For n = List2.ListCount - 1 To 0 Step -1
If List2.Selected(n) = True Then
If n = 0 Then sum = sum - 15
If n = 1 Then sum = sum - 20
If n = 2 Then sum = sum - 20
If n = 3 Then sum = sum - 25
If n = 4 Then sum = sum - 35
If n = 5 Then sum = sum - 50
If n = 6 Then sum = sum - 35
If n = 7 Then sum = sum - 20
If n = 8 Then sum = sum - 15
List2.RemoveItem (n)
z = z - 1
End If
Next
If z = 0 Then
Command2.Enabled = False
Command5.Enabled = False
Text1.Enabled = False
Text2.Enabled = False
Command4.Enabled = False
End If
End Sub
Private Sub Command3_Click() (эта функция переносит товар из списка в корзину)
Dim n As Integer
For n = 0 To List3.ListCount - 1
If List3.Selected(n) = True Then
List2.AddItem List3.List(n)
If n = 0 Then sum = sum + 15
If n = 1 Then sum = sum + 20
If n = 2 Then sum = sum + 20
If n = 3 Then sum = sum + 25
If n = 4 Then sum = sum + 35
If n = 5 Then sum = sum + 50
If n = 6 Then sum = sum + 35
If n = 7 Then sum = sum + 20
If n = 8 Then sum = sum + 15
List3.Selected(n) = False
z = z + 1
End If
Next
If z > 0 Then
Command2.Enabled = True
Command5.Enabled = True
Text1.Enabled = True
Text2.Enabled = True
If Text1.Text <> "" And Text2.Text <> "" Then Command4.Enabled = True
End If
End Sub
Если Вам удобно работать с полным кодом, то его можно взять здесь, а здесь полная версия этой лабы (с картинками (она нужна, если Вам не хочется исправлять ошибки в коде, связанные с отсутствием картинок)). (это самораспоковывающиеся архивы)
Всем зарание спасибо.
Цитата:
Originally posted by Lei fang
А может можно каким-то образом узнать название элемента в Лист Боксе (вместо индексов использовать названия)?
А может можно каким-то образом узнать название элемента в Лист Боксе (вместо индексов использовать названия)?
Воспользуйтесь свойством [COLOR=blue]Text[/COLOR].
Спасибо, Dmitrii. Разобрался я с удалением товаров, теперь все правильно подсчитывается.