![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| neweraser |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 17.2.2008 Репутация: нет Всего: 6 |
Доброго времени суток! Очень расчитываю на вашу помощь, т.к. в winapi я вообще не понимаю. На форме лежит ShellTreeView, в OnCreate формы к нему добавляются чекбоксы вот таким образом:
Мне нужно как-то сделать, чтобы при выделении корневого каталога выделялись и все дочерние каталоги, а в fList записывался только корневой, и наоборот, при выделении дочерних - с корня снималась галочка и в fList переписывались только дочерние. Это нужно будет для копирования групп файлов. Думаю, нормально объяснил, я старался Спасибо за любую помощь! Это сообщение отредактировал(а) neweraser - 11.4.2012, 09:20 -------------------- Кто ищет, тот всегда найдет. |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
Выделение или установка галочки? -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| neweraser |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 17.2.2008 Репутация: нет Всего: 6 |
Галочки
-------------------- Кто ищет, тот всегда найдет. |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
А onCheck как обработать нашел?
Я, пока, ничего лучше, чем запомнить ноду и ее состояние на onMouseMove, а затем сравнить с нодой на onClick, не придумал. -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| neweraser |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 17.2.2008 Репутация: нет Всего: 6 |
Я думаю, тут по-другому надо, в событии onClick проверять стоит ли галочка в вышестоящей директории, если да - убирать ее и результат записывать в fList. Потом если кликаешь по директории и она раскрыта - ставятся чекбоксы на все дочерние дериктории и в список файлов fList записывается только верхняя директория, так как она пойдет потом на копирование/перемещение, дабы избежать ошибку или по 2-му кругу не копировать файлы. Как-то так...
-------------------- Кто ищет, тот всегда найдет. |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
Вот посмотри, выводит в memo выбранные папки.
Правда тестить и писать комментарии уже было неохота да и времени нет. Даю в сыром виде. Что не понятно или не так работает, пиши. Присоединённый файл ( Кол-во скачиваний: 13 )
ShellTreeView.7z 208,10 Kb-------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| neweraser |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 17.2.2008 Репутация: нет Всего: 6 |
Все работает, но мне очень хотелось бы узнать и разобраться как... Устал уже искать в гугле, справках и msdn, может кто-нибудь даст ссылку или ткнет пальцем что ли...
Спасибо. -------------------- Кто ищет, тот всегда найдет. |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
Заполняешь память, выделенную под переменную tvi, нулями(все целочисленные 0, все указатели nil). В данном случае, скорее всего, можно эту строчку убрать. Дескриптор(идентификатор) ноды. А то, как TreeView "узнает", за какую ноду его спрашивают? Отправляет окну с дескриптором n.TreeView.Handle (в данном случае нашему ShellTreeView1) сообщение TVM_SETITEM в качестве lParam передается адрес стуктуры tvi TreeView по содержанию полей структуры tvi определяет ноду, и что с ней сделать. Добавлено через 8 минут Функция GetMessagePos Функция MapWindowPoints Это сообщение отредактировал(а) Чучмек - 19.4.2012, 19:50 -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
Определяешь к какой ноде и к какому участку ноды принадлежит точка tvhtinfo.pt -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |