Страница: 1 |
Страница: 1 |
Вопрос: Траблы с ListView
Добавлено: 10.03.08 15:01
Автор вопроса: mrphn
Как в ListView (ms common controls 5.0) задать каждой строке цвет и чтобы при клике мыши можно было редактировать элемент в строке не только под первой колонкой?
Ps можно ли присобачить xp стиль к ListView используя ms common controls 6.0?
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #1
Добавлено: 10.03.08 21:33
вопрос с цветами решается при помощи CustomDraw. Можно всё что угодно сделать.
Номер ответа: 2
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #2
Добавлено: 11.03.08 18:26
Редактирование не только первой колонки стандартно сделать нельзя. Можно извратиться, вызывая текстбокс для редактирования в нужном месте. Это уже давно реализовано и нормально работает, ищи.
XP стиль присобачить можно (манифест). Даже появится возможность группировки.
Номер ответа: 3
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #3
Добавлено: 11.03.08 20:06
Sur, то есть чтоб разбиение на группы было обязательно нужен XP-стиль?? Вот в чем дело-то!
Номер ответа: 4
Автор ответа:
mrphn
Вопросов: 5
Ответов: 12
Профиль | | #4
Добавлено: 12.03.08 15:37
насчет CustomDraw можно поподробнее
если кто наталкнется раньше на продвинутый listview киньте ссылку
ps
и все таки к ListView используя ms common controls 6.0 проблематично добавить стиль xp
Номер ответа: 5
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #5
Добавлено: 12.03.08 16:59
Всех заинтересованных могу только послать на
www.vbaccelerator.com/home/vb/Code/Controls/ListView/article.asp
Но если программа пишется с нуля, то советую присмотреться к тамошнему контролу S-Grid. Тоже не все гладко и не безглючно, но что делать... зато бесплатно.
Номер ответа: 6
Автор ответа:
mrphn
Вопросов: 5
Ответов: 12
Профиль | | #6
Добавлено: 12.03.08 21:34
знаю этот контрол, конечно хорош собой, но не подходит
Номер ответа: 7
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #7
Добавлено: 12.03.08 23:03
Про CustomDraw - я являюсь поклонником апишного контрола от sne)) и юзаю только его.
КустомДро выглядит примерно так (хотя тут несколько не красиво
If Form1.chk_DrawInList = 0 Then Exit Sub
Call CopyMemory(udtNMLVCUSTOMDRAW, ByVal lParam, Len(udtNMLVCUSTOMDRAW))
With udtNMLVCUSTOMDRAW.nmcd
Select Case .dwDrawStage
Case CDDS_PREPAINT
ret_val = CDRF_NOTIFYITEMDRAW: Exit Sub
Case CDDS_ITEMPREPAINT
ret_val = CDRF_NOTIFYSUBITEMDRAW: Exit Sub
Case CDDS_ITEMPREPAINT Or CDDS_SUBITEM
If udtNMLVCUSTOMDRAW.iSubItem = 0 Then
udtNMLVCUSTOMDRAW.clrTextBk = LocItemColor(.dwItemSpec)
udtNMLVCUSTOMDRAW.clrText = LocTextColor(.dwItemSpec)
Call SelectObject(.hdc, iFont.hFont)
ElseIf udtNMLVCUSTOMDRAW.iSubItem = 12 Then 'Номер локации: 7-ой кегль, курсив, серый цвет
udtNMLVCUSTOMDRAW.clrText = IndexColour(.dwItemSpec)
iFont.Size = 7: iFont.Italic = True: Call SelectObject(.hdc, iFont.hFont): iFont.Size = 8: iFont.Italic = False
ElseIf udtNMLVCUSTOMDRAW.iSubItem = 7 Then 'Шрифт ArialNar. от 7-ого до
iFont.Italic = True: Call SelectObject(.hdc, iFont.hFont): iFont.Italic = False
ElseIf udtNMLVCUSTOMDRAW.iSubItem = 11 Then '...до 10-ого элемента включительно
Call SelectObject(.hdc, iFont.hFont)
End If
CopyMemory ByVal lParam, udtNMLVCUSTOMDRAW, Len(udtNMLVCUSTOMDRAW)
ret_val = CDRF_NEWFONT
End Select
End With
End Sub
Номер ответа: 8
Автор ответа:
mrphn
Вопросов: 5
Ответов: 12
Профиль | | #8
Добавлено: 13.03.08 15:03
спасиб, счас поковыряюсь)