![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Чиви Чейс |
|
|||
|
Unregistered |
Нужна фукция каторая будет раскрыват TreeView до нужного места что то типа ExplorePatch(Y:\RED\SER\FEON\):boolean; Таким макаром в компоненте TreeView раскроет item (с именем 'Y:') далее в его SubItema'х раскроется 'RED' и тд. до нужного места. Если последующего итема нет то сответсно result:=false; |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
На оптимальность не претендует, но работает...
Функция ищет node уровня 0 с тектом "Y:", потом у его детей ищет нод с текстом "RED" и т.д. Может быть тебе надо будет сделать проверку без различий большие/маленькие буквы ? -------------------- С уважением, г-н Посол. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
а мне на деревьях ближе рекурсия, хоть объем явно больше и похоже эффективность то ж невысока:
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Чиви чейс |
|
|||
|
Unregistered |
Всем спасибо, я думал что сам справлюсь, но ошибался поэтому подвопрос:
А как сделать так чтобы сначала открылся первый итем у TreeView потом по событию OnExpanded раскрылся следующий и тд. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Тебе чо, надо чтоб дерево полностью раскрылось ? Или как ? Я немного не понял вопрос...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| чиви чейс |
|
||||
|
Unregistered |
Значит так:
Есть TreeView в нём заголовок одного из итемов 'c:', а заголовок суб итема этого итема 'tmp'.
Первый итем находится в состоянии Collapsed; У первого итема существует суб итем для того что бы по событию OnExpanding (компонента TreeView) можно былобы прочтитать папки диска C:\ и запихнуть их в качестве детей родителя 'c:'
Далее - Есть поле ввода и я хочу сделать так чтобы пособытию происходила последовательность открытия дерева, тоесть : путь c:\windows\system обрабатываем первую строчку до символа ' \ ' тоесть ' c: ' делаем Node.Expand(false); когда TreeView придёт в состояние Expanded то у родителя с заголовком 'c' уже будут дети (каталоги диска c:\ ), каждый из каторых будет прибывать в состоянии collapsed и будет иметь своего ребенка с заголовком 'tmp'. По событию OnExpanded следует обработать следующую строчку пути 'Windows' и так далее. =========================================================== Кароче нужно последовательное открытие пути дерева, с задержкой до события OnExpanded |
||||
|
|||||
| p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Для этого тебе надо в моем варианте только и сделать что добавить строку
node.Expand(false); перед строкой node := node.getFirstChild; В варианте cully - сам ищи куда это пихать.
Не обязательно иметь детей, чтобы можно было раскрывать нод. Нужно сделать node.HasChildren := true и тогда появится плюсик. Вот текст OnExpanded:
Тут при добавлении child'а проверяется, есть ли у этого каталога файлы, если есть, то ставится рядом с ним плюсик. Я не знаю надо ли тебе читать только каталоги, или все - и каталоги и файлы. В процедурине читаются все файлы. Если надо только каталоги, то замени faAnyFile на faDirectory (в двух строчках). -------------------- С уважением, г-н Посол. |
||||
|
|||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Я тебе немного наврал. Для того чтобы работал способ HasChildren := true, надо юзать не OnExpanded, а OnExpanding.
В конце процедурины OnExpanding поставить: AllowExpansion := true; -------------------- С уважением, г-н Посол. |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
P0S0l а как Переименовать Node.Text
Опятьже путь C:\MyFplder\REG Надо переименовать 'REG' ? |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
немного измени функцию ExplorePath на: function ExplorePath(tv : TTreeView; path : string) : TTreeNode; и внутри функции перед exit поставь Result := node; Потом в проге пиши : ExplorePath(TreeView1, 'C:\MyFolder\REG').Text := 'NewName'; Это сообщение отредактировал(а) p0s0l - 31.7.2003, 19:57 -------------------- С уважением, г-н Посол. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |