Фильтрация открытого диалогового окна в соответствии с предопределенным именем файла

  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:

Могу ли я отфильтровать файл с определенным префиксом?
Например; Мой файл называется ЦВЕТОК-3320, ЦВЕТОК-2230 и так далее. ТАК, я хочу отфильтровать открытое диалоговое окно, которое будет отображать только любой файл с префиксным именем FLOWER- (игнорировать расширение файла)

С наилучшими пожеланиями, пчела.


person Bianca    schedule 19.11.2013    source источник
comment
Если вы хотите, чтобы в диалоговом окне отображалось одно имя файла, используйте это имя файла в качестве фильтра. Пользовательский интерфейс этой программы не идеален.   -  person David Heffernan    schedule 19.11.2013


Ответы (1)


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

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

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

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

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

для отображения всех файлов с префиксом «ЦВЕТОК-». Если вы хотите отфильтровать все файлы, кроме одного, просто опустите подстановочный знак в первой части фильтра:

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

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

person jpfollenius    schedule 19.11.2013
comment
Спасибо. Это работает. Могу ли я отфильтровать только точное имя файла, указанное в поле редактирования, не обращая внимания на расширение файла? - person Bianca; 19.11.2013
comment
@Bianca Что именно ты имеешь в виду, и ты не можешь решить это самостоятельно? - person David Heffernan; 19.11.2013
comment
Привет, извините за неприятный вопрос. Проблема в том, что мои файлы (простые файлы, зашифрованные), некоторые из них не имеют расширения. Итак, чтобы получить такую ​​фильтрацию, как то, что я хотел, - это фильтр имени файла и префикс. В любом случае это не один файл. Поле редактирования является динамическим в зависимости от ввода пользователя. - person Bianca; 19.11.2013
comment
Так что оставьте расширение. Я не понимаю, почему ты все еще борешься - person David Heffernan; 19.11.2013
comment
openDialog.Filter := Edit1.Text + '|*FLOWER-*.*' ; не отображает файл точно так же, как в поле редактирования, он показывает весь файл с ЦВЕТОМ- - person Bianca; 19.11.2013
comment
@ Бьянка Я не понимаю. Расскажите нам точно, дословно, в чем проблема. Точное имя файла. Точное содержание поля редактирования. Именно то поведение, которое вам нужно. - person David Heffernan; 19.11.2013
comment
Спасибо. Я понял. openDialog.Filter := Edit1.Text + '|FLOWER-*.*|Substitude with other FLOWER|*FLOWER-*.*' ; Вы молодцы! Большое вам спасибо .. ‹3 - person Bianca; 19.11.2013