снова про ListView

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

снова про ListView

Сообщение Penumbra » 06.03.2009 (Пт) 13:55

Неподскажете как избавиться от неприятного "мигания" всего ListView-а при обновлении данных в дной из ячеек раз в 0,2 сек
MainForm.ActiveForm.ListView1.ListItems(Select).SubItems(5) = commands

mus-lk
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 09.05.2009 (Сб) 16:53

Re: снова про ListView

Сообщение mus-lk » 09.05.2009 (Сб) 17:07

Я для себя решил эту проблему следующим образом:

LV - listview

Объявим: Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long

в форму на кнопку вешаем:
Код: Выделить всё
LockWindowUpdate LV.hWnd

For i = 1 To 100
    LV.ListItems.Add , , i
Next i

LockWindowUpdate 0


Попробуй может это то что ты искал!

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Re: снова про ListView

Сообщение Saturn.65 » 05.06.2009 (Пт) 9:07

В ListView выводятся данные при вычислении. В каждой строчке разные цифры. Как сложить их вместе?
Код: Выделить всё
Set itmAdd = ListView1.ListItems.Add(Text:=Text1.Text)
itmAdd.SubItems(1) = Text2.Text
itmAdd.SubItems(2) = Text3.Text
itmAdd.SubItems(3) = Val(Text2.Text) + Val(Text3.Text)

Т.е. мне надо все данные, появляющиеся в itmAdd.SubItems(3) в каждой строчке после сложить в таком стиле:
Text5.Text = itmAdd.SubItems(первая строчка) + itmAdd.SubItems(вторая строчка)... Как индексировать правильно эти строки, чтобы после проводить операции?
Главное, ребята, сердцем не стареть...

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: снова про ListView

Сообщение Денис » 05.06.2009 (Пт) 9:17

Saturn.65, ListView служит для отображения данных, а не для хранения. И уж тем более не для операций над ними. Сделай массив и работай с ним, а в ListView выводи данные из массива.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Re: снова про ListView

Сообщение Saturn.65 » 05.06.2009 (Пт) 9:24

Денис
Т.е. отображенные данные уже никак не обработать?
Главное, ребята, сердцем не стареть...

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: снова про ListView

Сообщение Денис » 05.06.2009 (Пт) 9:57

Обработать можно, но о-очень неудобно...
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: снова про ListView

Сообщение arvitaly » 05.06.2009 (Пт) 10:13

SubItems - это не строчки

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: снова про ListView

Сообщение Денис » 05.06.2009 (Пт) 10:55

Код: Выделить всё
' И объявляешь структуру
Private Type MyRecord
    ID as Long
    Name as String
    Value1 as Single
    Value2 as Single
    Value3 as Single
end Type

' и создаешь из нее статические массивы
Private MyRec(100) as MyRecord

' ну, понял?

sub AddData(Index as integer, internalID as long, Name as String, value1 as single, value2 as single, value3 as single)
        with myrec(Index)
            .ID = internalID
            .Name = Name
            .Value1 = Value1
            .Value2 = Value2
            .Value3 = Value3
        end with
end sub

sub FillArray
    dim i as integer
    for i = 0 to 100
        adddata(i, i, "Foo" & cstr(i), i*1.1, i*2.2, i*3.3)
    next
    UpdateView
end sub

sub UpdateView
    ListView1.clear
    dim i as integer
    dim A1 as object
    for i = 0 to 100
        set A1 = ListView1.Add(myrec(i).Name)
        A1.subitems(1) = myrec(i).Value1
        A1.subitems(2) = myrec(i).Value2
        A1.subitems(3) = myrec(i).Value3
    next
end sub

'Вот и все, в дальнейшем работаем с массивом, и после операций над ним, вызываем UpdateView

Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 78

    TopList