Поиск:

Ответ в темуСоздание новой темы Создание опроса
> можно ли такое через ListView, как поменять ширину строки 
:(
    Опции темы
NPU_gh0st
Дата 6.12.2007, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.10.2007

Репутация: нет
Всего: нет




можно ли такое(как на рисунке) сделать через ListView (не через DBGrid), не хочу через DBGrid так как на него у меня нет описания вообще.
прошу сказать возможно ли такое вообще, а если да, то как. Или иной способ динамично менять ширину строк в ListView.
Если нет, то посоветуйте что нибудь. Или подкиньте ссылку на нормальное описалово DBGrid. 

Присоединённый файл ( Кол-во скачиваний: 53 )
Присоединённый файл  368_1.gif 7,54 Kb
PM MAIL   Вверх
Greeen
Дата 6.12.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18





--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
NPU_gh0st
Дата 7.12.2007, 04:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.10.2007

Репутация: нет
Всего: нет



Спасибо конечно (дал бы тебе +, да сообщений мало). Но я бы хотел узнать такое вообще возможно на ListView??? так как проект уже напислан с использованием этого элемента, но тут вдруг понадобилось менять ширину строки... Не хотелось бы все переписывать из-за такой мелочи. Что вы мне можете посоветовать??? 
PM MAIL   Вверх
Earnest
Дата 7.12.2007, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Теоретически можно, разными способами. 1) SetItemImage для каждого итема (картинка - это серая кнопка или серая кнопка со стрелкой). 2) Полный OwnerDraw

Но я бы посоветовала разобраться с гридом. Потому что у тебя именно грид, а не список. И может оказаться, что завтра "вдруг" потребуется еще что-то, что лист-вью стандартно не поддерживает.


--------------------
...
PM   Вверх
NPU_gh0st
Дата 7.12.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.10.2007

Репутация: нет
Всего: нет



Earnest, спасибо за варианты.
вопросы по твоим советам:
1) а можно будет с помощью картинки менять ширину строки.
2) Полный OwnerDraw (извени но не знаю что это такое еще не встречал) - что это??? может это стиль LVS_OWNERDRAWFIXED, если да то что дальше??? (хотя я думая вряд ли)

минус Grida это то что его прийдется учить искать карту откликов этого элемента (к примеру на перетаскивание, или упорядовачивания по нажатию заголовка) , сделать так чтобы выделялась только строка  и т.д.
А кроме как изменения ширины строки от грида ничего не нужно, может даже и стрелочка не обязательна, главное чтобы размер строки можно было поменять наведя курсор на разделительную линию (как у Grid)
PM MAIL   Вверх
Earnest
Дата 7.12.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



1) Что ты подразумеваешь по шириной строки? Если высоту, то да. Собственно, только с помощью картинок ее и можно изменить (по крайней мере я другого способа не знаю). Однако имей ввиду, что высота строки одинаковая для всех элементов: она определяется высотой картинок в image-list.
А если это размер поля по горизонтали, то вообще не понимаю, в чем проблема: если есть хедер, то меняй себе этот размер сколько угодно, это стандартное поведение. 

2) Да, это стиль LVS_OWNERDRAWFIXED. А дальше ты должен полностью сам отрисовать каждый итем в виртуальной функции DrawItem - учитывая все его состояния, которые туда передаются.

3) Есть еще один способ кастомизации отображения: CustomDraw. Он несколько проще, чем OwnerDraw, т.к. можно выбирать - это я рисую, а здесь пусть Windows парится. Однако, его гибкость гораздо меньше. Выполняется это через обработку сообщения WM_NOTIFY с кодом NM_CUSTMODRAW.

Все это несложно, но достаточно громоздко, в двух словах не опишешь. Ищи примеры и разбирайся (например, на codeproject), будут конкретные вопросы - задашь.




--------------------
...
PM   Вверх
NPU_gh0st
Дата 9.12.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.10.2007

Репутация: нет
Всего: нет



Earnest, спасибо буду искать примеры (если не сложно не кинишь ссылку на опред. пример, где это есть, желательно методов 2 и 3).
1) да это высота
2) и 3) а с их помощью можно будет поменять высоту одной строки??? 
еще раз спасибо
PM MAIL   Вверх
Earnest
Дата 11.12.2007, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Т.е. ты предлагаешь мне вместо тебя поискать? smile 
Нет у меня готовых ссылок. Помню, что видела на codeproject упоминания, поэтому и советую. Там достаточно простая классификация - можно по контролам искать, или по ключам LVS_OWNERDRAWFIXED или NM_CUSTOMDRAW. 

2) и 3) - нельзя. Высота у всех строк будет одинаковая. Хочешь разную - пользуйся гридом. 


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1121 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.