![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Mr_Devil |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
Подскажите как сделать такой фильтр?
Листаю MSDN, но пока безрезультатно. Присоединённый файл ( Кол-во скачиваний: 68 ) ![]() |
|||
|
||||
DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: нет Всего: 19 |
Я бы посоветовал посмотреть в сторону DevExpress или TMS у них возможно есть готовые решения.
По сути это похоже на PopupMenu с нарисованными на ней элементами. -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." ![]() ![]() ![]() |
|||
|
||||
Mr_Devil |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
Что-то я сомневаюсь, что Explorer писали на сторонних компонентах.
Хотелось бы всетаки решение на WinAPI. |
|||
|
||||
DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: нет Всего: 19 |
Не ну никто не запрещает допиливать имеющиеся под конкретные задачи, вот ребята в микрософте и допилили то что было. С этим, к сожалению, не помогу. -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." ![]() ![]() ![]() |
|||
|
||||
Ne1tr1n0 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 1.3.2009 Репутация: 2 Всего: 8 |
А это и не ListView в Explorer'e. Это нечто под названием DirectUIHWND. Что это такое, и как реализовано, хз, не копался во внутренностях, но вроде статьи какие-то видел на том же СodeProject'e или где-то ещё. Тебе нужен точно такой же список (отображающий файлы на диске, с возможностью фильтрации)? Посмотри компоненты JamShellBrowser, там есть компонент JamSystemShellView, делает то, что тебе надо. Ну и другие компоненты можно посмотреть. Если всё же надо сделать это с помощью ListView, то придется вручную отрисовывать Header у ListView, рисовать DropDown-кнопку (по всей видимости используя темы), отслеживать клики в нужных областях (если в районе DropDown'a то показывать соответствующую менюшку (её наверное придется делать отдельной формой), после нее сортировать итемы, или какие-то скрывать. В общем достаточно много работы.
|
|||
|
||||
Mr_Devil |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
В общем так, господа. Стрелочку (SplitButton), при нажатии на которую должно появляться выпадающее меню, мне получить удалось. Она нажимается, но пока ничего не происходит
![]() SplitButton можно увидеть только в Win Vista и выше. Делается это так:
lvTable - это самый обычный ListView. ViewStyle должен быть vsReport. HD_ITEM - Содержит информацию для айтема хэдера. Здесь написано что там есть и для чего. WPARAM (у нас он 0) - это номер айтема в хэдере, к которому нужно "применить" параметры из HD_ITEM. Про Header Control написано вот тут. И в частности про HDM_SETITEM вот здесь. При установке флага HDF_SPLITBUTTON - The item displays a split button. The HDN_DROPDOWN notification is sent when the split button is clicked. HDN_DROPDOWN notification sent by a header control to its parent (т.е. нашему ListView) when the drop-down arrow on the header control is clicked. В ListView есть такой LVN_COLUMNDROPDOWN notification code. Буду копать дальше ![]() |
|||
|
||||
Mr_Devil |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
Попробовал я получать этот LVN_COLUMNDROPDOWN
Меню вываливается где надо, но есть один очень неприятный недостаток. ListView из Delphi VCL (Delphi XE2) не знает ничего про флаг HDF_SPLITBUTTON и при любых манипуляциях с хедером (например, изменение размера колонки), он его сбрасывает :( Как вариант, можно создать ListView в рантайме на WinAPI, без использования VCL, но так не интересно ![]() Это сообщение отредактировал(а) Mr_Devil - 23.11.2012, 09:11 |
|||
|
||||
Mr_Devil |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |