Переполнение ListView

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

Переполнение ListView

Сообщение leopold69 » 29.10.2006 (Вс) 22:01

Проблема: Заполняю listview данными, количество большое. Данных больше чем 32768, чуть больше наверное на 2000-3000. Все данные попадают в список, но при выборе строки, которая находится после записи 32768, свойство item возвращает код первой строки listview. Предполагаю, что какое-либо из свойств контрола объявлено как integer, может у кого-нибудь была такая проблема.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 29.10.2006 (Вс) 22:19

Какими именно данными заполняется ListView? Есть необходимость вносить 40000 записей?

leopold69
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 29.10.2006 (Вс) 21:54

Сообщение leopold69 » 29.10.2006 (Вс) 22:25

Заполняется фамилиями и адресами, необходимость есть т.к. вся база не будет никогда превышать 33000

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 29.10.2006 (Вс) 22:38

Проверил только что.

Код: Выделить всё
Private Sub Form_Load()
Dim i As Long

For i = 0 To 40000
    ListView1.ListItems.Add , , "s" & i
Next i
End Sub

Private Sub ListView1_Click()
MsgBox ListView1.SelectedItem.Index & " " & ListView1.SelectedItem.Text
End Sub


Вот так показывает все прекрасно. Покажите свой код.

leopold69
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 29.10.2006 (Вс) 21:54

Сообщение leopold69 » 29.10.2006 (Вс) 22:56

Вообще-то я делаю все в процедуре:

Private Sub lstBases_ItemClick(ByVal Item As MSComctlLib.ListItem)
End Sub

И по свойству item определяю номер записи, так вот это свойство при выборе любой строки в конце списка выводит данные первой строки, и именно после 32 тысяч, может действительно попробоватеть через Click а не через ItemClick?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 29.10.2006 (Вс) 23:37

Я о том же, делай через Click. :)

Item'ы в ListView - это элементы Collection, а в коллекции может быть больше 32768 элементов, вообще говоря. Причину бага посмотрю завтра в мсдн, сегодня уже поздновато.


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

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

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

    TopList