Форум: "Основная";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];
ВнизВопрос по PopupMenu Найти похожие ветки
← →
leonidus (2003-09-13 23:46) [0]Я хочу сделать следующее: программа сканирует данную директорию, рекурсивно обходит ее и в масив сохраняет пути ко всем найденный по маске файлам, а потом в run-time добавляет итемся в компонет PopupMenu что бы после открытия PopupMenu получилать древовидная структура данной директории. Директорию сканировать получается, все найденные файлы я сохраняю в массив, а вот с иерархическим добавлением итемсов в PopupMenu че-то не получается, может подскачет кто? Заранее спасибо.
← →
Without Any ... (2003-09-13 23:57) [1]Cобствнно что не получается? Add вроде прекрасно работает. Выложи хотя бы часть кода, надеюсь помогут.
← →
Sam Stone (2003-09-14 00:02) [2]создай первый уровень меню, затем у нужного элемента юзай add.
Например:
menu1:TMenuItem; (создано)
submenu1:TMenuItem; Создаем, затем menu1.add(submenu1)
← →
leonidus (2003-09-14 11:42) [3]Спасибо, попробую как советует Sam Stone добавлять элементы по уровням.
← →
leonidus (2003-09-15 13:33) [4]Вот код который я использую но он работате только если кол-во подкаталогов равно 1, т.е. может отобразить структуру windows\*.*, а вот если надо глубже например windows\system\*.* уже никак, а надо универсальный алгоритм (думаю рекурсивный).
массив files содержит пути к найденным файлам
массив dir содержит имена каталогов но только первого уровня
files_col - размер массива files
dir_col - размер массива dir
var
FMenuItem,SubItem: TMenuItem;
PopupMenu: TtfXPPopUpMenu;
begin
PopUpMenu:=TtfXPPopUpMenu.Create(self);
for i:=1 to dir_col do
begin
FMenuItem := TMenuItem.Create(Self);
FMenuItem.Caption:=dir[i];
FMenuItem.OnClick:=PopupMenuClick1;
PopUpMenu.Items.Add(FMenuItem);
for j:=1 to files_col do
begin
s:=files[j];
p:=ansipos("\",s);
s:=copy(s,1,p-1);
if s=dir[i] then
begin
SubItem := TMenuItem.Create(self);
s:=files[j];
SubItem.Caption :=s;
SubItem.OnClick:=PopupMenuClick1;
FMenuItem.Add(SubItem);
end
end;
end;
PopUpMenu.Popup(248,272);
end;
Мастера подскажите приз как решить проблему.
← →
[lamer]Barmaglot (2003-09-15 14:05) [5]http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988622376&n=15
только вместо DeleteDir(SearchRec.Name), делай что-то типа menu1.add(SearchRec.Name)
← →
[lamer]Barmaglot (2003-09-15 14:09) [6]Точнее вот лучшая ссылка на рекурсивный алгоритм
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=1015254946&n=19
← →
leonidus (2003-09-15 15:54) [7]Я понимаю как рекурсия работает, но вот с FMenuItem.Add туплю, подскажите пожалуйста!!!
← →
Arm79 (2003-09-15 16:08) [8]?
Если директория или файл в текущем каталоге, то items.add. Далее, если файл в директории, то выбираем соответствующую позицию в меню, и add subitem
← →
leonidus (2003-09-15 21:58) [9]А можно примерчик
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c