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

Добавлено: 16 ноя 2006, 12:14
oif
Да так и сделаю,спасибо.
Что-то в этом направлении не думал.
Добавлено: 16 ноя 2006, 14:10
grey
при настройке св-ва 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;