![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
самонахождение файлов *.bmp [D7, WinME]
clampo © (2004-07-03 12:12:00)Подскажите, пожалуйста решить проблему:
У меня в плеере скинка - это бмп-файл под опред. названием
и при загрузке плеер его находит и загружает. А как сделать так
чтобы при вызывании опред. меню в нём отображался список
бмп файлов находящихся в папке ../Skins. А при клике на выбранный файл (из этого меню) он загружался в обложку плеера
Cardinal (2004-07-03 15:04:00) [1]>Рамиль © (03.07.04 12:41) [2]
Думаю, автору вопроса это очень поможет :->
function ScanDir(SkinMenu: tmenuitem; SetSkin: TNotifyEvent; StartDir: string;
Mask: string = '*.*'; FindNested: boolean = false): integer;
var
SearchRec: TSearchRec;
newitem: tmenuitem;
begin
result:=0;
if StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
if FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then
begin
repeat
Application.ProcessMessages;
if (SearchRec.Attr and faDirectory) <> faDirectory then
begin
newitem := tmenuitem.create(nil);
newitem.Caption := StartDir + extractfilename(SearchRec.Name);
newitem.Hint := StartDir + extractfilename(SearchRec.Name);
newitem.OnClick := setskin;
skinmenu.Add(newitem);
inc(result);
end
else
if FindNested then
if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
begin
newitem := tmenuitem.create(nil);
newitem.Caption := StartDir + SearchRec.Name + '\';
newitem.Hint := StartDir + SearchRec.Name + '\';
newitem.OnClick := setskin;
skinmenu.Add(newitem);
ScanDir(SkinMenu,setskin,StartDir + SearchRec.Name + '\',Mask);
end;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
procedure TForm1.setscinclick(Sender: TObject);
begin
{Устанавливаем скин с именем tmenuitem(sender).hint}
end;
Чтобы заполнить у меню, к примеру n4, субменю пунктами с bmp-скинами из папки "c:\skins", надо выполнить
scandir(n4,setscinclick,'c:\skins','*.bmp',false);
Рамиль (2004-07-03 12:41:00) [2]Не дочитал:)
Тогда не так, находишь все файлы и динамически добавляешь пунты меню.
Рамиль (2004-07-03 12:40:00) [3]opSkin: TOpenDialog;
....
if opSkin.Execute then
begin
Skin := opSkin.FileName;
end;