Alexanbar » 11.07.2004 (Вс) 20:49
Что мне не нравится в Listview в режиме Lvwlist (и не только в этом режиме) - это троеточие (... )в конце длинных текстов у элементов -просто бесит.
Как я с этим борюсь? Вначале нахожу максимальную длину текста, затем посылаю сообщение LVM_SECOLUMNWIDTH. В режиме Lvwlist изменяется расстояние между колонками на то, которое нужно.
Если после этого попытаться в Imagelist добавить новую иконку, колонки опять схлопываются, т.е. опять появляются троеточия.
Если вновь послать сообщение LVM_SECOLUMNWIDTH, то часто получается так, что расстояние-то между колнками восстанавливается, но при пермещении прокрутки, например, в крайнее левое положение, первая колонка будет не на нулевом расстоянии, а несколько продвинута вправо.
Правильное положение прокрутки получается, только, если она находится в момент добавления новых иконок в крайнем левом положении.
Другой глюк - при отматывании прокрутки в крайнее правое положение последняя колонка может быть либо прокручена наполовину, либо вообще не видна.
Промежуточные колонки могут иногда только хвосты показывать, а начала их не видно.
--------------------------------------------------------------------------------
Сегодня весь день посвятил альтернативному варианту - отказался от родной прокрутки Listview вообще и использовал контрол Scrollbar.
Для этого Listview1 поместил на Picturebox , а ширину Listview выбирал так, чтобы у элемента Listview родной прокрутки не было, и прокручивал весь Listview внутри Picturebox-а.
Оказывается, так сделать можно не всегда - есть ограничение на максимальную длину Listview - 16384 пикселя. Поэтому, если, напрмер, в Listview загрузить каталог C:\Windows\System32 , то в любом случае родные прокрутки будут (визуально их, конечно, спрятать можно).
Для чего, собственно, мне нужно добавлять иконки после того, как все элементы в Listview добавлены? Для того, чтобы их можно было быстрее добавить с "дежрными" икноками, а затем, по мере прокручивания, извлекать родные иконки.
--------------------------
А делать Set Listview1.Imagelist =Nothing нельзя - нет смысла