List View глючит в режиме lvwIcon

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

List View глючит в режиме lvwIcon

Сообщение Pantalone » 12.11.2005 (Сб) 16:48

Привет!
В ListView в режиме отображения крупных иконок почему-то так получается что иконки немного уезжают в право, а не сидят вплотную к левому краю, возникают какие-то непонятные отступы.
Причем, достаточно переместить один из значков или изменить размер ListView, как значки тут же выравниваются и встают правильно, согласно установленным значениям View и Arrange. Отступы возникают именно во время заполнения ListView.
Почему такое?

Вот видел рисунок с такой же проблемой:
http://www.sql.ru/forum/actualfile.aspx?id=1607883

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 12.11.2005 (Сб) 17:51

Вот простейший пример:
http://pantalone.nm.ru/ListViewBug.rar

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 12.11.2005 (Сб) 21:03

А по-моему, так и должно быть - иначе подписи под иконками не поместятся.
МОжно попробовать посылать сообщения в Listview для установки левой границы.
Сообщения посылаются с помощью функции SendMessage и ей подобных. Все сообщения для Listview начинаются с префикса LVM_:
Public Const LVM_FIRST = &H1000
Public Const LVM_FINDITEM = LVM_FIRST + 13
Public Const LVM_GETITEMTEXT = LVM_FIRST + 45
Public Const LVM_SORTITEMS = LVM_FIRST + 48
Public Const LVM_SORTITEMSEX = LVM_FIRST + 81

Public Const LVM_ENSUREVISIBLE = 4115
Public Const LVM_SCROLL = 4116
Public Const LVM_GETITEM = 4101
Public Const LVM_SETITEM = 4102
Public Const LVM_INSERITEM = 4103
Public Const LVM_GETSTRINGWIDTH = 4113

Public Const LVM_UPDATE = 4138
Public Const LVM_GETCOLUMNWIDTH = 4125
Public Const LVM_SETCOLUMNWIDTH = 4126
Public Const LVM_GETITEMRECT = 4110
Public Const LVM_GETSELECTEDCOUNT = 4146
Public Const LVM_GETCOUNTPERPAGE = &H1028
Public Const LVM_GETTOPINDEX = (LVM_FIRST + 39)

Public Const LVM_SETVIEW = (LVM_FIRST + 142)


Подробности, как всегда, в MSDN.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 12.11.2005 (Сб) 21:31

Но в стандартном проводнике в режиме Крупных значков ничего никуда не уезжает.
Начинаю уже подумывать что VB глюкалово, которое недостойно изучения. Столько лет на него угробить и такую свинью получить...

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 13.11.2005 (Вс) 11:57

Pantalone писал(а):Но в стандартном проводнике в режиме Крупных значков ничего никуда не уезжает.
Начинаю уже подумывать что VB глюкалово, которое недостойно изучения. Столько лет на него угробить и такую свинью получить...


Не думаю, что из-за глюков в Listview стоит отказываться от использования языка. Не уверен, что другие продукты свободны от глюков. К тому же вовсе не обязательно, что этот глюк вызван самим VB.


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

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

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

    TopList