![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Всем привет!)
У мну вот такая задача: Сделать динамическое popupmenu, которое создается с капшинами из тхт файла, и привязать к каждой созданной кнопке меню открытие какого либо файла. Помогите связать нажатие любого пункта меню и имя файла по порядку в папке) чтоб было: Кнопарь 1 = вызов файла, первого в папке Кнопарь 2 = вызов второго, следующего за первым файла ...... Скажем, есть в папке файлы AIMP.exe и рисунок.bmp, Первый элемент всплывающего меню соответственно вызовет аимп, а второй открое рисунок)) Использую вот такой код: Код:
procedure TMain_Form.PopupMenu1Popup(Sender: TObject); var Menu, MSub: TmenuItem; m,sm:string; i:integer; begin with (Sender as TPopupMenu) do //очищаю динам меню от барахла while Items.Count > 0 do begin Items.delete(0); Items[0].Free; end; AssignFile(MenuFile, 'MenuItems.txt'); Reset(MenuFile); While not eof(MenuFile) do //заполняю капшинами из файла begin Readln(MenuFile, m); with (Sender as TPopupMenu) do begin Menu:=TMenuItem.Create(self); Menu.Caption := m; Menu.OnClick := MyClick; Items.Insert(0, Menu); end; end; Menu:=TMenuItem.Create(self); with (Sender as TPopupMenu) do Items.Insert(1, Menu); AssignFile(SubMenuFile, 'SubMenuItems.txt'); Reset(SubMenuFile); While not eof(SubMenuFile) do //создаю подменю и тож заполняю из файла begin Readln(SubMenuFile, sm); with Menu do begin Caption:='Подменю'; MSub:= TMenuItem.Create(self); MSub.Caption:=sm; MSub.OnClick:=MyClick; end; Menu.Insert(0, MSub); end; Listbox1.Clear; FauJIbl('\', '*.*', Listbox1.Items); //поиск файлов в текущей папке //for i:=0 to Popupmenu1.Items.Count-1 do //PopupMenu1.Items.Items[i].Caption:=Listbox1.Items[i]; end; procedure TMain_Form.MyCLick(Sender: TObject); begin beep; end; Procedure FauJIbl(StartDir: String; Mask:string; List:TStrings); Var SearchRec:TSearchRec; Begin // IF Mask ='' then Mask:= '*.*'; IF FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then Begin Repeat IF (SearchRec.Attr and faDirectory) <> faDirectory then List.Add(StartDir + SearchRec.Name) ; Until FindNext(SearchRec) <> 0; FindClose(SearchRec); End; end; Последний раз редактировалось Mag992, 28.03.2010 в 14:34. |
#2
|
||||
|
||||
![]() можно забивать имена файлов в стринговый массив, а потом для каждой попапменю кнопки последовательно делать открытие файла с именем массив_имен[и]? Если да, то как?
|