| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Virtual TreeView настройка |
| Автор: Norfonzor 14.5.2010, 07:23 | ||||
| вопросы: 1) как назначить на node иконки папок, пример "от квадро" открывает с ошибкой. 2) глюк с выделением: в моей программе существуют 2 вида файлов: папки и файлы, в файлах нельзя создавать под каталоги. Редактирования осуществляется при нажатии на правую кнопку мыши появляется PopupMenu, в котором, при нажатии на файлы пункт "Добавить в текущем" становится в .disable проблема: выделяю папку, далее правой кнопкой жму на файл, он не выделяется, открывается PopupMenu с enabled и добавляется подкаталог в файл: ![]() когда я левой кнопкой выделяю файл то все работает нормально ![]() Как исправить эту проблему? надо как то осуществить выделение. код обработчиков: на VT правой кнопкой:
3) В VT могут добавляться файлы (MS office) при нажатии на них в VT они загружаются в Webbrowser: при удалении каталога, надо удалить все файлы которые в нем содержаться, т.е. надо перечислить все Node далее я удалю их
Спасибо! |
| Автор: kami 14.5.2010, 07:56 | ||
| 1. Должен быть ImageList, назначенный VT, в VT нужно назначить обработчик OnGetImageIndex, в котором возвращать индекс нужной иконки из ImageList. Кроме примеров от Quadro есть примеры на сайте разработчика. 2. Для начала, выставить TreeOptions>SelectionOptions>toRightClickSelect в True. 3. Не нужно перечислять все ноды. Они сами перечислятся в vt.OnFreeNode. Правда, тут нужно обработать освобождение нодов по завершению работы программы. Например, так:
|
| Автор: Norfonzor 14.5.2010, 09:47 | ||||
1)
в ImageList1 иконки с номера 0 и 1. но иконки не отображаются. Текс придумал сам ГГЫЫ!!! выбрал Imagelist1 в ObjectInspector (слева) в пункте Images. иконки появились! 2) стоит в true, я заметил что она выделяется когда пропадает PopMenu. 3) все работает отлично! Не думал что так просто будет.
Добавьте kami репу+++ у меня постов не хватает |
| Автор: Norfonzor 14.5.2010, 11:34 | ||
| Все отлично работает! По поводу "что будет с пунктом меню add, если Assigned(NewPhone)=False", когда "Assigned(NewPhone)" может быть false? а еще вопрос как заблокировать PopupMenu чтобы оно не появлялось. (если не в режиме редактирования то появляться не должно) Сделал так:
не знаю на сколько это красиво и можно ли так делать |
| Автор: kami 14.5.2010, 23:32 | ||
ХЗ. Не заморачивался подобным. Но вообще - может, когда нод не инициализирован. Если у тебя такое невозможно - зачем тогда вообще проверка на Assigned? А если возможно - нужно предусмотреть все варианты ветвления алгоритма. работает? Значит можно. Но вообще - если можно отследить явный признак перехода в режим редактирования и обратно, я бы сделал так: // в событии входа/выхода в/из режим редактирования
Вот и все - когда входим в режим редактирования у vt "появляется" PopupMenu, а когда выходим - исчезает... Единственное - нужно определиться с начальным состоянием - если при запуске программы режим редактирования включен, то нужно прописать в инспекторе объектов vt.PopupMenu, иначе - оставить пустым. |
| Автор: Norfonzor 15.5.2010, 07:19 |
| PopupMenu, работает )) Да и наверное последний вопрос: разворачиваю каталог выделяю документ, далее нажимаю на "+" или "-" чтобы свернуть VT а он распознает нажатие на "+/-" как нажатие на документ и он повторно перезагружает документ. ![]() Как можно сделать чтобы VT не распознавала нажатие на "+/-" как нажатие на документ? |
| Автор: kami 17.5.2010, 13:01 | ||||
Если еще актуально: код OnClick и/или OnMouseDown (что от него осталось) - в студию. Навскидку: перенести код, отвечающий за загрузку/перезагрузку документа в событие onChange (возникает при смене фокуса с нода на нод). Типа так:
|
| Автор: Norfonzor 17.5.2010, 18:38 |
| kami, Актуально! еще раз спасибо за помощь, ждал твоего ответа. Как всегда все отлично работает!!! |