Проблема наверное в руках...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
soljen
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 06.05.2004 (Чт) 15:47
Откуда: Из темноты...

Проблема наверное в руках...

Сообщение soljen » 13.09.2004 (Пн) 15:02

Доброго времени суток, господа!

Есть такая проблема!
На форму передаётся коллекция (скажем номера магазинов, каждый магазин может работать с несколькими типами товаров). На форме TreeView (это не критично, можно использовать ListView) в который, при загрузке формы, загружаются все возможные значения товаров с поясняющей информацией!
При заполнении значений галочка: не ставится, если данное значение товара не приемлемо ни к одному из переданного списка номеров магазинов; ставится, если все магазины работают с этим типом; и, т.к. подобный контрол не имеет 3-его значения (grayed), то есть предложение закрашивать строку серым цветом для тех случаев, в которых только некоторые магазины из списка работают.
Я сначала первым проходом рисую серым все товары, с которыми вообще работаю переданные магазины. А вот дальше….. дальше я либо сильно запутался, либо попал в тупик: вторым проходом я решил проставлять галочки и рисовать белым, если данный товар относится ко всем магазинам из списка. Но тут у меня ничего не получается. Серые остаются серыми, и всё тут, хоть тресни!!!! :(:(:(:(:( Морочюсь я с этой проблемой несколько дней! Помогите ПЛЗ, кто может…
Может есть у кого-то кусочек кода...

P.S.: Для сравнения наборов я пользуюсь коллекциями… может в них загвоздка???

Заранее благодарен!!!
Тиха украинская ночь, но сало надо перепрятать...
(R)Jeka

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.09.2004 (Пн) 17:26

Дык а как ты сравниваешь-то?
Код сравнения...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

soljen
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 06.05.2004 (Чт) 15:47
Откуда: Из темноты...

Сообщение soljen » 13.09.2004 (Пн) 17:48

Код: Выделить всё
If trvTov.Nodes(i).BackColor = vbButtonFace Then
    strZap = "SELECT IDPOK FROM POKRZ WHERE (IDRZ=" & i & ")"
                Set rs1 = cnn1.OpenRecordset(strZap)
                Do While Not rs1.EOF
                    cTempPOK.Add (rs1!idPOK)
                    rs1.MoveNext
                Loop
               
                For j = 1 To cPOK.Count
                    For k = 1 To cTempPOK.Count
                        If cPOK.Item(j) = cTempPOK.Item(k) Then
                            cIn.Add (1)
                        Else
                            cIn.Add (0)
                        End If
                    Next
                   
                    For k = 1 To cIn.Count
                        If cIn.Item(k) = 1 Then
                            cIn1.Add (1)
                            blnIn = True
                            Exit For
                        End If
                    Next
                    If blnIn = False Then
                        cIn1.Add (0)
                    End If
                    blnIn = False
                   
                    For k = 1 To cIn.Count
                       cIn.Remove (1)
                    Next
                Next
               
                For j = 1 To cIn1.Count
                    If cIn1.Item(j) = 1 Then
                        blnIn = True
                        Exit For
                    End If
                Next

                If blnIn = True Then
                    trvTov.Nodes(i).BackColor = vbButtonFace
                Else
                    trvTov.Nodes(i).BackColor = vbWhite
                    trvTov.Nodes(i).Checked = True
                End If

                For j = 1 To cTempPOK.Count
                   cTempPOK.Remove (1)
                Next
                rs1.Close

                blnIn = False
     
            End If
        End If

Мне кажется, что глупо как-то реализовано, нужно какой-то иной подход!
Тиха украинская ночь, но сало надо перепрятать...
(R)Jeka


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList