Использовать 2 версии VirtualTreeView

Имеется:Delphi 7 и рабочий проект на VirtualTree v.4.8.5 (с кучей своих доработок кода VirtualTrees.pas). Проект в стадии постоянного обновления, версию VT менять в нем смерти подобно (afair, начиная с 4.8.6 изменены параметры в событиях).Требуется (в смысле, хотелось бы):начать новый проект (в принципе, он завязан на действующий, но будет более "глобальным") на Delphi 7, VT v.5.0.0.Оба проекта будут вестись на одной машине.Вопрос:как совместить возможность использования в Design-Time VT 4.8.5 и 5.0.0? (и возможно ли это).При попытке установки v5.0.0 параллельно v4.8.5 Delphi начинает усиленно ругаться (в частности, "Cannot load package 'VirtualTreesD.' It contains unit 'VirtualTreesReg.', which  is also contained in package 'bla-bla-bla\VirtualTreesD7D.bpl'" (кто бы сомневался)). Отключение "старого" пакета перед установкой приводит к невозможности работать с фреймами "старого" проекта, а тот ввиду использования Conditional defines систематически нуждается в buildении...P.S. использовать создание vt только в run-time с разными путями к исходникам не предлагать 
3 ответа

Немного не в тему, но интересно: Какого рода изменения внесены VirtualTrees.pas?Это я к тому, что виртуал один из самых гибких компонентов, в котором помимо кучи настроек вставлено очень много виртуальнх методов в актуальных местах.


 Какого рода изменения внесены VirtualTrees.pas
Навскидку:1. Изменение процедуры вывода дерева на принтер (позволяющая печатать Header на каждой странице и грамотно разбивающая на эти самые страницы - т.е. в отличие от стандартной процедуры v4.8.5, она не оставит часть строки на одном листе, а часть - на другом; с возможностью выводить всё дерево/от начала до выделения/от выделения до конца/только выделенные строки; печать актуальной ширины дерева (т.е. только от первого до последнего видимого столбца и не более), т.к. стандартная процедура выведет всю канву, даже если она шире, чем занимают видимые столбцы...)2. В самом начале работы с vt был выявлен баг - если закрыть приложение, когда vt находится в режиме редактирования ячейки, то вылетало AV. Устранено собственными силами (может, устранено и в последующих версиях - не смотрел чейнджлог).3. Используемые редакторы для vt подстраивались под ширину редактируемой колонки, т.о. если пользователь сокращал ее до минимума (буквально несколько пикселей, чтобы было только видно "+" или "-"), то редактор было уже не видно. Устранено заданием минимальной ширины (в редакторах из VTEditors.pas нет свойства Constraints). Ну, это хоть и не к virtualTrees.pas, но в ту же тему.Из основного всё (а может, и вообще - всё), код дополнялся по мере необходимости, так что строчкой больше - строчкой меньше, кто ж сейчас вспомнит Я так понимаю, что метода безболезненного решения этого вопроса нет... Жаль, конечно, но не особо. Продолжу работать с 4.8.5 и на новом проекте, тем более что его возможностей хватает (наверное, потому что не пользовался нововведениями в более свежих версиях)...


ИМХО: Все эти изменения могут быть легко сделаны применяя банальное наследование. Делается так: создается свой юнитдля наследника, который объявляется так: TVirtualStringTree = class(VirtualTrees.TVirtualStringTree). Затем в югитах с формами, на которых есть деревья подключается этот  юнит после юнита VirtualTrees. Шаг простой, и позволит обновлять компонент без проблем и не геморроиться с 2 версиями.На крайняк если без этих изменений никак нельзя, то sSVN тебе в помощь - можно слить исходники с официального svn, внести правку и отослать diff участнику, кот имеет права коммитить туда. Они реагируют довольно шустро. Или сделать свою ветку svn для своей версии и мерджить изменения из официальной ветки к себе.