ListView без перетягивания Background'a.

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

ListView без перетягивания Background'a.

Сообщение kibernetics » 11.12.2006 (Пн) 19:09

Здрасти.
Не мог бы кто пролить свет на то, какой контрол, типа ListView можно заюзать чтоб туда можно было подложить картинку, которая бы не двигалась при скролинге? ListView вроде неплох, но там... перетягивается бекграунд. Это очень плохо. Может кто-то знает решение, чтоб бекграунд оставался всегда на месте?

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 11.12.2006 (Пн) 21:45

Могу предложить два решения:

LVS_OWNERDRAWFIXED
http://www.vbaccelerator.com/home/VB/Co ... rticle.asp
Последний раз редактировалось BV 12.12.2006 (Вт) 17:41, всего редактировалось 1 раз.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

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

Сообщение Alexanbar » 11.12.2006 (Пн) 23:38

Можно отловить скролирование LIstview, а затем послать сообщение LVM_SETBKIMAGE. В качестве пераметров в этом сообщении передаётся, в частности, и расположение картинки.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 12.12.2006 (Вт) 14:36

BV
во втором решении проблема остаётся, с одной лишь разницей, что бекраунд tile -тся.

Хорошо, если всё-таки заставить бекраунд быть статическим очень тяжело, то можно ли сделать на каждую запись Label? Всего около 400 записей. Получается не более 400 Label' ов. А потом прокручивать уже массив Label' ов. Редактирвание не нужно, только отображение. Или это не грамотно?
Дело в том, что я както делал проектик и насытил его многочисленными компонентами, и в один прекрасный момент VB сказал, что больше ничего не могу добавить на форму. Видимо, есть всё-таки край...

И еще:
LVS_ONWERDRAWFIXED
LVM_SETBKIMAGE
это отностится к АПИ?

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 12.12.2006 (Вт) 17:37

Хорошо, если всё-таки заставить бекраунд быть статическим очень тяжело, то можно ли сделать на каждую запись Label? Всего около 400 записей. Получается не более 400 Label' ов. А потом прокручивать уже массив Label' ов. Редактирвание не нужно, только отображение. Или это не грамотно?


Проще отрисовывать нужный тескт самостоятельно
Изображение

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 12.12.2006 (Вт) 17:43

const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

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

Сообщение Alexanbar » 12.12.2006 (Вт) 17:55

kibernetics писал(а):Дело в том, что я както делал проектик и насытил его многочисленными компонентами, и в один прекрасный момент VB сказал, что больше ничего не могу добавить на форму. Видимо, есть всё-таки край...


Ещё нет.
Код: Выделить всё
set Labelx=Form1.Controls.Add ("VB.Label","Labelx")
'или
Load label1(i)



И еще:
LVS_ONWERDRAWFIXED
LVM_SETBKIMAGE
это отностится к АПИ?


Да.

Код: Выделить всё
'примерно так
Sendmessage listview1.hwnd,LVM_SETBKIMAGE,0,plvbki

'где plvbki - это LVBKIMAGE Structure




Подробности:
http://msdn.microsoft.com/library/defau ... kimage.asp

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 12.12.2006 (Вт) 18:10

BV
это больше подходит для ветки "VB для профессионалов".

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

Сообщение GSerg » 12.12.2006 (Вт) 18:15

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

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 12.12.2006 (Вт) 18:28

а давайте лучше сделаем пример.
я был бы премного благодарен. облазил весь инет, нигде нету подходящего контрола. а без него губится вся идея на корню...
в настоящее время, я еще совсем слаб в АПИ...

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

Сообщение Alexanbar » 12.12.2006 (Вт) 21:05

kibernetics писал(а):а давайте лучше сделаем пример.
я был бы премного благодарен. облазил весь инет, нигде нету подходящего контрола. а без него губится вся идея на корню...


Времени нету, однако!

в настоящее время, я еще совсем слаб в АПИ...


Без этого в VB6 мало что сделаешь интересного.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 13.12.2006 (Ср) 15:32

ну может еще кто-то, кроме Alexanbar'a, сможет расколоть этого крепкого орешка....

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

Сообщение Alexanbar » 13.12.2006 (Ср) 22:11

Ещё один момент.
Прорисовка сдвинутой картинки займёт некоторое время. Боюсь, что это будет порядка 0.5 - 2 с для картинки, размеры которой занимают значительную часть экрана.
Т.е. может получиться следующее.
Крутим прокрутку, а она притормаживает.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 14.12.2006 (Чт) 10:33

Задержки в сдвиге картинки конечно же не очень желательны. Получается, что идею с бекраундом можно похоронить. Ччёрт, не очень-то весёленькое вестие...
Тогда скажите, насколько тяжело сделать ListView с чередующимися по цвету строчками? Т.е., например, одна строчка темно-коричневая, следующая светло-коричневая, следующая опять темно-коричневая, следом светло-коричневая... и т.д. на весь список.

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

Сообщение Alexanbar » 14.12.2006 (Чт) 17:00

Чередования можно добиться, перехватывая уведомления, отсылаемые Listview своему контейнеру, с последующей отрисовкой конкретного элемента.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 14.12.2006 (Чт) 17:07

вот:
Вложения
Custom_Dra556832172002.zip
(65.88 Кб) Скачиваний: 74

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 14.12.2006 (Чт) 17:34

Konst_One

спасибо. я видел это пример на planetsource вродебы. однако, у меня он почему-то неработает. вылетает сам ВБ ко всем чертям, как будто бы так и должно.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 14.12.2006 (Чт) 17:41

Alexanbar
это всё теоретически. мне бы хотя бы посмотреть, что такое SendMessages. как они отправляются, кому куда, зачем... вот чего я незнаю. а так конечно предполагать можно всё что угодно. почему и прошу примерус

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 14.12.2006 (Чт) 17:41

странно, у меня везде работает.
может у тебя виндоус какой-то особенный :?:

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 14.12.2006 (Чт) 17:47

Konst_One

да нет. ХР сп2

окно прорисовывает, пытается чем-то его наполнить и вуаля... в нокдаун

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 14.12.2006 (Чт) 17:53

сек, сейчас проверю на xpsp2 у соседа

:(

у него XP SP1 , но там все работает без проблем.
может кто еще проверит, у меня сейчас нет возможности :?:


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

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

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

    TopList