![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
При запуске программа загружает плагины, и в OpenDialog должны добавляться новые расширения. Проблема вот в чем:
Код:
const
DefOpenList = 'MPEG Audio Files(*.mp3;*.mp2;*.mp1)|*.mp3;*.mp2;*.mp1|'+
'Ogg Vorbis Audio (*.ogg)|*.ogg|'+
'Microsoft Wave Audio (*.wav)|*.wav|'+
'MOD Music (*.mo3;*.it;*.xm;*.s3m;*.mtm;*.mod;*.umx)|*.mo3;*.it;*.xm;*.s3m;*.mtm;*.mod;*.umx|'+
'Windows Media Audio (*.wma;*.wm;*.wax;*.asx;*.wn;*.wmx;*.wmd;*.wmz)|*.wma;*.wm;*.wax;*.asx;*.wn;*.wmx;*.wmd;*.wmz|'+
'Midi(*.mid;*.midi;*.rmi)|*.midi;*.mid;*.rmi|'+
'AudioCD(*.cda)|*.cda|'+
'Video(*.avi;*.wmv;*.mpg;*.asf;*.dvr-ms)|*.avi;*.wmv;*.mpg;*.mpeg;*.asf;*.dvr-ms';
var AllSupFiles : widestring = 'All Supported Files|*.mp3;*.mp2;*.mp1;*.ogg;*.wav;*.mo3;*.it;*.xm;*.s3m;*.mtm;*.mod;*.umx;*.wm;*.wax;*.asx;*.wn;'+
'*.wmx;*.wmd;*.wmz;*.midi;*.mid;*.rmi;*.cda;*.avi;*.wmv;*.mpg;*.mpeg;*.asf;*.dvr-ms';
//Это дефолтные значения
...
OpenDialog1.Filter := DefOpenList
fh := FindFirstFile(PChar(ExeDir + 'bass*.dll'), fd);
if (fh <> INVALID_HANDLE_VALUE) then
try
repeat
plug := BASS_PluginLoad(fd.cFileName, 0);
if Plug <> 0 then
begin
Info := pointer(BASS_PluginGetInfo(Plug));
for a := 0 to Info.formatc - 1 do
begin
OpenDialog1.Filter := OpenDialog1.Filter + '|' + Info.Formats[a].name + '(' +
Info.Formats[a].exts + ')|' + Info.Formats[a].exts;//добавляем новые расширения в диалог
AllSupFiles := AllSupFiles + ';' + Info.Formats[a].exts;// и в список поддерживаемых форматов
end;
end;
until FindNextFile(fh, fd) = false;
finally
Windows.FindClose(fh);
end;
OpenDialog1.Filter := AllSupFiles + '|' + OpenDialog.Filter;не думаю, что это из-за длины строки. я видел фильтры и подлиннее. Как заставить диалог работать как положено? |
|
#2
|
|||
|
|||
|
В каком смысле показываются все файлы? Тоесть всякие *.txt, *.tha и др. ? Если так то попробуй внести еще в сам диалог открытия All Support Files и в фильтре нужные форматы..
если не поможет то напиши в аську |
|
#3
|
||||
|
||||
|
Если ты не заметил, то я так и делаю
Код:
OpenDialog1.Filter := AllSupFiles + '|' + OpenDialog.Filter; |
|
#4
|
||||
|
||||
|
На основе твоего кода написал тестовое, но немного по другому (думаю что из-за того, что у меня Delphi 7). Может быть и коряво... Но у меня все работает.
Код:
const
DefOpenList = 'MPEG Audio Files(*.mp3;*.mp2;*.mp1)|*.mp3;*.mp2;*.mp1|'+
'Ogg Vorbis Audio (*.ogg)|*.ogg|'+
'Microsoft Wave Audio (*.wav)|*.wav|'+
'MOD Music (*.mo3;*.it;*.xm;*.s3m;*.mtm;*.mod;*.umx)|*.mo3;*.it;*.xm;*.s3m;*.mtm;*.mod;*.umx|'+
'Windows Media Audio (*.wma;*.wm;*.wax;*.asx;*.wn;*.wmx;*.wmd;*.wmz)|*.wma;*.wm;*.wax;*.asx;*.wn;*.wmx;*.wmd;*.wmz|'+
'Midi(*.mid;*.midi;*.rmi)|*.midi;*.mid;*.rmi|'+
'AudioCD(*.cda)|*.cda|'+
'Video(*.avi;*.wmv;*.mpg;*.asf;*.dvr-ms)|*.avi;*.wmv;*.mpg;*.mpeg;*.asf;*.dvr-ms';
Var
AllSupFiles : widestring;
// так для теста
const
name:array [1..3] of string =('Test1','Test2','test4');
Exts:array [1..3] of String =('*.test','*.tstst','*.stst');
Var
I:Byte;
begin
OpenDialog1.Filter := DefOpenList;
//Это дефолтные значения
AllSupFiles := 'All Supported Files|*.mp3;*.mp2;*.mp1;*.ogg;*.wav;*.mo3;*.it;*.xm;*.s3m;*.mtm;*.mod;*.umx;*.wm;*.wax;*.asx;*.wn;'+
'*.wmx;*.wmd;*.wmz;*.midi;*.mid;*.rmi;*.cda;*.avi;*.wmv;*.mpg;*.mpeg;*.asf;*.dvr-ms';
For I:=1 to 3 do
begin
OpenDialog1.Filter := OpenDialog1.Filter + '|' + name[i] + '(' +
exts[i] + ')|' + exts[i];//добавляем новые расширения в диалог
AllSupFiles := AllSupFiles + ';'+ exts[i];// и в список поддерживаемых форматов
end;
OpenDialog1.Filter := AllSupFiles + '|' + OpenDialog1.Filter;
OpenDialog1.Execute;
Ты проследи под отладчиком может быть идет неверное присваивание имен и расширений. |
|
#5
|
||||
|
||||
|
расширения берутся из плагинов так же как и в твоем коде...ну почти...расширения присваиваются правильно(все пересморел), строка фильтра не урезана...даже компоненты другие юзал...всек та же проблема
![]() |