2013-11-19 3 views
4
  1. Номер вопроса 1: Я хочу отфильтровать диалог открытия, в котором будет отображаться только определенное имя файла. Имя файла указывается в поле TEdit. Это мой код, но он все еще показывает весь файл в каталоге.Фильтрация диалогового окна открытия по предварительно определенному имени файла

    процедура TForm1.ButtonLoad (отправитель: TObject);

    var 
        openDialog: TOpenDialog; 
        i: Integer; 
    begin 
    TFBusy(sender); 
        openDialog := TOpenDialog.Create(self); 
        openDialog.Title := 'Browsing desired file, Browse for '+ TEdit1.Text; 
        openDialog.InitialDir := strMyDoc; 
        openDialog.FileName := TEdit1.Text; 
        openDialog.Filter := 'All file extension|*.*'; 
        try 
        if not openDialog.Execute then 
        begin 
    mem0.lines.add('Browse file to load was cancelled'); 
        end; 
        finally 
    
        for i := 0 to openDialog.Files.Count - 1 do 
         //i do here with the file 
    
        end; 
        openDialog.Free; 
        TFReady(sender); 
    end; 
    

Хотя имя файла на открытом диалоговом дисплее правильно, но он по-прежнему отображает целые файлы внутри каталога.

Вопрос № 2:

Могу ли я фильтровать файл с определенным префиксом?
E.g; Мое имя файла FLOWER-3320, FLOWER-2230 и т. Д. SO я хочу отфильтровать диалог открытия, который будет отображать только файл с именем префикса FLOWER- (игнорировать расширение файла)

Наилучшие пожелания, Пчела.

+0

Если вы хотите, чтобы в диалоговом окне отображалось одно имя файла, используйте это имя файла как ваш фильтр. Пользовательский интерфейс этой программы не кажется идеальным. –

ответ

1

Он показывает все файлы, потому что вы явно сказал это так:

openDialog.Filter := 'All file extension|*.*'; 

Установка файла в одиночку не фильтрует открытого диалога.

Вы можете использовать фильтр, как это:

openDialog.Filter := 'Flower Files|FLOWER-*.*'; 

, чтобы отобразить все файлы с префиксом "FLOWER-". Если вы хотите, чтобы отфильтровать все, кроме одного конкретного файла, просто оставить из маски в первой части фильтра:

openDialog.Filter := 'Flower-2230 File|FLOWER-2230.*'; 

Но (как Давид указывает в своем комментарии), почему у открытого диалога, когда вы ограничиваете выбор в один файл?

+0

Спасибо. Работает. Могу ли я фильтровать только точное имя файла, указанное в поле tedit, не обращая внимания на расширение файла? – Bianca

+0

@Bianca Что именно вы имеете в виду, и не можете ли вы это решить? –

+0

Привет, извините за грязный вопрос. Проблема в том: мои файлы (простые файлы, зашифрованные), некоторые из них не имеют расширения файла. Таким образом, чтобы получить фильтрацию, точно так же, как я и хотел, это фильтр имени файла и префикс. В любом случае это не отдельный файл. Поле редактирования является динамическим в соответствии с пользовательским вводом. – Bianca

Смежные вопросы