Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2009, 18:13   #1
Sensizu
Otsukitakitte
Форумчанин
 
Аватар для Sensizu
 
Регистрация: 01.10.2009
Сообщений: 126
Восклицание Проверка TreeView

На форме есть компонент TreeView (далее к1) и компонент отображающий файлы компьютера (далее к2).
При дропе из к2 в к1, нужно программно проверить все существующие FirstNodes (т.е материнские узлы, а не дочерние им) и если в к1 существует узел с заголовком файла, который тащится из к2 - то ничего не делать. Помогите это программно реализовать...

Пробовал циклом по количеству узлов, но получается не совсем тот результат:
Цитата:
var s,d:integer; m:integer; i2:array[1..1000] of integer;
begin
RzBox.ApplyFilePath(ShellView.Path) ; // присваиваю еще одному компоненту значение файла из к2, чтобы точно извлечь директорию
m:=0; // Индекс начального узла
for s:=1 to к1.Items.Count do
begin
i2[m]:=Pos(rzBox.Directory,к2.Items.Item[d].Text); d:=d+1;
m:=m+1;
end;

if i2[m]=0 then
begin
Действие, при условии что программа не нашла ни одного узла с таким же именем как и перетаскиваемый файл.
end;

end else Действие обратное;
end;
Т.е. программа выполняет поиск по узлам, но выводит в переименую именно последний результат.. а мне нужно общий результат. Поправьте, если что там не так.

Очень прошу оказать помощь в этом деле. Код только приветствуется.
Помог - ставь плюс.
$("question").onAnswer(function() { $(this).getItWright(true); });

Последний раз редактировалось Sensizu; 23.11.2009 в 18:58.
Sensizu вне форума Ответить с цитированием
Старый 23.11.2009, 22:48   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
проверить все существующие FirstNodes
Эти ноды имеют индекс родителя, равный "-1", так что все проверять не нужно.
То есть вам нужно в вашем цикле вставить проверку
Код:
if TreeView.Items.Item[i].Parent.Index<0 then
Хотя у вас там вообще что-то такое написано...
Код:
m:=0; // количество найденных дубликатов
for s:=0 to к2.Items.Count-1 do
begin
if к2.Items.Item[s].Parent.Index<0 then
if Pos(rzBox.Directory,к2.Items.Item[s].Text)>0 then
m:=m+1;
end;

Последний раз редактировалось mihali4; 23.11.2009 в 22:54.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Treeview и бд sisofcase БД в Delphi 8 03.04.2012 17:32
TreeView Claster Помощь студентам 0 20.10.2009 15:41
TreeView ddr111 Общие вопросы Delphi 7 31.03.2009 00:35
TreeView и БД Constellation БД в Delphi 12 27.09.2008 15:22