Работа с фильтром в OpenDialog
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Как сослаться на (фильтр) тип файла OpenDialog в if?
Пример:
допустим в OpenDialog(тип файлов)есть два типа .txt и .bmp
Мы выбираем файлы .txt
Надо чтобы проверялось условие if если выбран фильтр .txt then...
или if если выбран фильтр .bmp then...
И как сделать так чтобы при загрузке OpenDialog не отображались не какие файлы,пока не будет выбран тип файлов?
Желательно пример кода привидите.
Буду очень благодарен за помощь.
Пример:
допустим в OpenDialog(тип файлов)есть два типа .txt и .bmp
Мы выбираем файлы .txt
Надо чтобы проверялось условие if если выбран фильтр .txt then...
или if если выбран фильтр .bmp then...
И как сделать так чтобы при загрузке OpenDialog не отображались не какие файлы,пока не будет выбран тип файлов?
Желательно пример кода привидите.
Буду очень благодарен за помощь.
Спомощью свойства FilterIndex. Вот пример самый примитивный:
Только смотри, там первый фильтр который ты задаёшь имеет индекс не ноль, а единицу.
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then
if opendialog1.filterindex = 1 then label1.Caption:='txt' else label1.Caption:='bmp';
end;
Большое спасибо Svoja4ok.
А на второй вопрос знаешь ответ?
И как сделать так чтобы при загрузке OpenDialog не отображались не какие файлы,пока не будет выбран тип файлов?
А на второй вопрос знаешь ответ?
И как сделать так чтобы при загрузке OpenDialog не отображались не какие файлы,пока не будет выбран тип файлов?
А смысл, первым выстовляешь к примеру тхт и будут отображаться только они, если надо пользователь переключит...
По-моему, все эти фильтры при выборе при желании легко обходятся. Достаточно в поле имени файла написать *.* и нажать кнопкe выбора ("Открыть"), как тут же будут отображены все файлы.
BBB, что правда- то правда...
oif, У тебя в любом случае, будут отображаться каталоги. А чем, действительно, тебя не устраивает вариант Dunconа?
oif, У тебя в любом случае, будут отображаться каталоги. А чем, действительно, тебя не устраивает вариант Dunconа?
можно забить первым фильтром какой-нить
Filter := 'Выберите фильтр|любоеимя.расширение|...'
тогда при запуске диалог вряд ли что-то пакажет, а в строке фильтра будет красивое пояснение, что делать
Filter := 'Выберите фильтр|любоеимя.расширение|...'
тогда при запуске диалог вряд ли что-то пакажет, а в строке фильтра будет красивое пояснение, что делать

С уважением, Lost Angel...
Да так и сделаю,спасибо.
Что-то в этом направлении не думал.
Что-то в этом направлении не думал.
при настройке св-ва Filter добавляешь "пустую" строку (в FilterName и Filter
ставишь по пробелу), которая будет иметь свой индекс
procedure TForm1.Button1Click(Sender: TObject);
var str: string ;
idx: integer ;
begin
// перед запуском диалога используя св-во FilterIndex устанавливается "пустая" строка
// - тогда файлов не будет видно
OpenDialog1.FilterIndex := {индекс "пустой" строки} ;
OpenDialog1.Execute ;
// после закрытия диалога в idx будет номер строки из св-ва Filter, которую выбрал юзер
idx := OpenDialog1.FilterIndex ;
str := OpenDialog1.Filter ;
// используя idx, из str вытаскиваешь выбраное юзером расширение
{...}
end;
ставишь по пробелу), которая будет иметь свой индекс
procedure TForm1.Button1Click(Sender: TObject);
var str: string ;
idx: integer ;
begin
// перед запуском диалога используя св-во FilterIndex устанавливается "пустая" строка
// - тогда файлов не будет видно
OpenDialog1.FilterIndex := {индекс "пустой" строки} ;
OpenDialog1.Execute ;
// после закрытия диалога в idx будет номер строки из св-ва Filter, которую выбрал юзер
idx := OpenDialog1.FilterIndex ;
str := OpenDialog1.Filter ;
// используя idx, из str вытаскиваешь выбраное юзером расширение
{...}
end;