Как добавить кнопку в строку ListView
От: Aleksey1978  
Дата: 24.11.06 19:42
Оценка:
Здравствуйте.
Пишу приложение на ATL в VC6.
Как сделать так, чтобы в каждой строке определенной колонки ListView была кнопка?
И еще вопрос, как закрасить опреденную строку ListView определенным цветом?
Re: Как добавить кнопку в строку ListView
От: Константин Л.  
Дата: 27.11.06 12:33
Оценка:
Здравствуйте, Aleksey1978, Вы писали:

A>Здравствуйте.

A>Пишу приложение на ATL в VC6.
A>Как сделать так, чтобы в каждой строке определенной колонки ListView была кнопка?

только рисовать самому через LVS_OWNERDRAWFIXED

A>И еще вопрос, как закрасить опреденную строку ListView определенным цветом?


LVS_OWNERDRAWFIXED
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Как добавить кнопку в строку ListView
От: Аноним  
Дата: 28.11.06 09:03
Оценка: +1
A>>И еще вопрос, как закрасить опреденную строку ListView определенным цветом?

КЛ>LVS_OWNERDRAWFIXED


Custom Draw попроще будет.
Re: Как добавить кнопку в строку ListView
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 28.11.06 16:06
Оценка:
Здравствуйте, Aleksey1978, Вы писали:

A>Как сделать так, чтобы в каждой строке определенной колонки ListView была кнопка?


Можно попробовать взглянуть в сторону PropertyGrid control и сделать "по аналоги".
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий
Re[2]: Как добавить кнопку в строку ListView
От: homering07  
Дата: 12.12.06 15:27
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>Здравствуйте, Aleksey1978, Вы писали:


A>>Здравствуйте.

A>>Пишу приложение на ATL в VC6.
A>>Как сделать так, чтобы в каждой строке определенной колонки ListView была кнопка?

КЛ>только рисовать самому через LVS_OWNERDRAWFIXED


Зачем самому рисовать кнопку?
Можно сделать приблизительно так
// получить координаты нужной ячейки в которой дожна быть кнопка через GetSubItemRect(&rectSubItem)
CButton* pB = new CButton();
pB->Create(m_hWnd, rectSubItem, styles)

Все!!!
Кнопка нарисуется сама + будут приходить нотификации от нее!!!
Re[3]: Как добавить кнопку в строку ListView
От: programmater  
Дата: 12.12.06 16:55
Оценка: +1
Здравствуйте, homering07, Вы писали:

H>Здравствуйте, Константин Л., Вы писали:


КЛ>>Здравствуйте, Aleksey1978, Вы писали:


A>>>Здравствуйте.

A>>>Пишу приложение на ATL в VC6.
A>>>Как сделать так, чтобы в каждой строке определенной колонки ListView была кнопка?

КЛ>>только рисовать самому через LVS_OWNERDRAWFIXED


H>Зачем самому рисовать кнопку?

H>Можно сделать приблизительно так
H>// получить координаты нужной ячейки в которой дожна быть кнопка через GetSubItemRect(&rectSubItem)
H>CButton* pB = new CButton();
pB->>Create(m_hWnd, rectSubItem, styles)

H>Все!!!

H>Кнопка нарисуется сама + будут приходить нотификации от нее!!!
Угу, а потом листвью проскролят/потягают за хидер колонки/удалят несколько впередисоящих айтемов. И где окажется такая кнопка? .
Я бы делал так: у листвью выставлял стиль LVS_EX_SUBITEMIMAGES, рисовал изображение кнопки как битмапу, заталкивал в имиджлист и в соответствующей колонке в качестве имиджа выдавал индекс изображения кнопки в имиджлисте. Ну нажатия на эту кнопку придется ловить самому (обрабатывать NM_CLICK от листвью). Проще по-моему не придумаешь.
Удачи. Заморачиваться с овнердрав стоит только в том случае, ежели хочешь, чтобы эта кнопка у тебя была не квадратная а непременно по размеру (возможно даже изменяющемуся за хидер) ячейки. Тут описаный мной способ не прокатит . Но я бы сделал квадратную иконку в виде кнопки и не парился. Можно для пущей важности запретить изменение ширины этой колонки, чтобы выглядело все как надо.
Удачи
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.