|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Проблема с фильтром OpenDialog
При запуске программа загружает плагины, и в 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; Ты проследи под отладчиком может быть идет неверное присваивание имен и расширений. Хорошо написанная программа не требует документации ICQ 9-184-668. |
#5
|
||||
|
||||
расширения берутся из плагинов так же как и в твоем коде...ну почти...расширения присваиваются правильно(все пересморел), строка фильтра не урезана...даже компоненты другие юзал...всек та же проблема
|