Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.25;
Скачать: CL | DM;

Вниз

Вопрос по 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
3-82047
BillyJeans
2003-09-02 17:32
2003.09.25
Фильтрация по дате в TDbf...


1-82311
Дубинин Алексей
2003-09-13 22:41
2003.09.25
Ошибка в программе


6-82369
Vintik
2003-07-26 15:32
2003.09.25
надо чтобы текст добавлялся виде HTML кода в TWebBrowser


1-82214
Senator
2003-09-11 14:47
2003.09.25
Отсоединение Attache файла из Outlook a


1-82314
AndB
2003-09-12 05:51
2003.09.25
uses Windows, Forms, Menus, ... частично?