TDirectoryOutline. Ошибка в свойстве Directory
Автор: Коробенков Владимир
При присвоении свойству TDirectoryOutline.Directory строки, являющейся
действительным файловым путем, компонент должен отобразить этот путь раскрытием
соответствующей ветви дерева директорий (вызывая защищенный метод WalkTree().
Из-за ошибки в методе SetDirectory WalkTree не вызывается. Ошибка выявлена в
Delphi 5, не исправлена и в Delphi 6. ТИПОВЫЕ РЕШЕНИЯ.
- В методе SetDirectory модуля DirOutln.pas строку
if Copy(FDirectory, Length(FDirectory) - 1, 2) = ':\' then WalkTree(TempPath);
заменить на if Copy(FDirectory, Length(FDirectory) - 1, 2) <> ':\' then WalkTree(TempPath);
и перекомпилировать модуль.
- Просто не использовать этот компонент.
КОММЕНТАРИЙ:
Проверено (Delphi 5). Ошибка реально существует. По-видимому, этот код не
изменялся от самых ранних версий.
Малоизвестный компонент TDirectoryOutline находится на странице Samples
палитры компонентов. Это простой и вполне приличный способ получить визуальное
дерево директорий. Он построен на основе
TCustomGrid->TCustomOutline, а не на базе стандартного
Win32-контрола TreeView, и потому лишен присущих ему ограничений и недостатков.
Модификация исходников, не входящих, строго говоря, в VCL, - не есть большая
беда. Как вариант, можно предложить в подобных случаях держать модифицированную
копию модуля у себя в проекте.
|