Работа с фильтром в OpenDialog

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
oif
Сообщения: 42
Зарегистрирован: 09 ноя 2006, 21:03

Как сослаться на (фильтр) тип файла OpenDialog в if?
Пример:
допустим в OpenDialog(тип файлов)есть два типа .txt и .bmp
Мы выбираем файлы .txt
Надо чтобы проверялось условие if если выбран фильтр .txt then...
или if если выбран фильтр .bmp then...
И как сделать так чтобы при загрузке OpenDialog не отображались не какие файлы,пока не будет выбран тип файлов?

Желательно пример кода привидите.

Буду очень благодарен за помощь.
Svoja4ok
Сообщения: 27
Зарегистрирован: 18 окт 2006, 15:57

Спомощью свойства FilterIndex. Вот пример самый примитивный:

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
begin
 if opendialog1.Execute then
 if opendialog1.filterindex = 1 then label1.Caption:='txt' else label1.Caption:='bmp';
end;
Только смотри, там первый фильтр который ты задаёшь имеет индекс не ноль, а единицу.
oif
Сообщения: 42
Зарегистрирован: 09 ноя 2006, 21:03

Большое спасибо Svoja4ok.
А на второй вопрос знаешь ответ?
И как сделать так чтобы при загрузке OpenDialog не отображались не какие файлы,пока не будет выбран тип файлов?
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

А смысл, первым выстовляешь к примеру тхт и будут отображаться только они, если надо пользователь переключит...
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

По-моему, все эти фильтры при выборе при желании легко обходятся. Достаточно в поле имени файла написать *.* и нажать кнопкe выбора ("Открыть"), как тут же будут отображены все файлы.
Svoja4ok
Сообщения: 27
Зарегистрирован: 18 окт 2006, 15:57

BBB, что правда- то правда...
oif, У тебя в любом случае, будут отображаться каталоги. А чем, действительно, тебя не устраивает вариант Dunconа?
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

можно забить первым фильтром какой-нить
Filter := 'Выберите фильтр|любоеимя.расширение|...'
тогда при запуске диалог вряд ли что-то пакажет, а в строке фильтра будет красивое пояснение, что делать :)
С уважением, Lost Angel...
oif
Сообщения: 42
Зарегистрирован: 09 ноя 2006, 21:03

Да так и сделаю,спасибо.
Что-то в этом направлении не думал.
grey
Сообщения: 5
Зарегистрирован: 09 ноя 2006, 16:00

при настройке св-ва 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;
Ответить