Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Настройка фильтра TOpenDialog на неотображение 
:(
    Опции темы
Агрох
Дата 2.12.2013, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.4.2013
Где: Москва

Репутация: 3
Всего: 6



Собственно, как настроить фильтр TOpenDialog-а, чтобы он отображал все файлы, кроме, например, exe?

В стандартных функциях поиска файлов винды всё просто: 
Код

NOT *.exe

--------------------
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
ZBugz
Дата 3.12.2013, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



В настройках TOpenDialog->Filters
PM MAIL   Вверх
Агрох
Дата 3.12.2013, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.4.2013
Где: Москва

Репутация: 3
Всего: 6



ZBugz, я знаю где и как настраивать простые фильтры, типа *.exe|*.exe. Но не знаю как именно сделать так, чтобы отображать все файлы, кроме указанных. В конкретном примере надо, чтобы отображались файлы всех расширений, кроме *.exe.

При поиске в винде можно ввести NOT *.exe, но добавление настройки 
Код

Все, кроме exe|NOT *.exe

 в TOpenDialog->Filters ничего не даёт.

Находил упоминание о том, что логические операторы надо заключать в _, т.е. _NOT_ *.exe, но так тоже не вышло.

Можно ли вообще использовать логические операторы в TOpenDialog->Filters?

Это сообщение отредактировал(а) Агрох - 3.12.2013, 10:08
--------------------
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
Akella
Дата 3.12.2013, 10:23 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Там можно указать список отображаемых файлов.
Например, 
Код
OpenDialog1.Filter := 'Текстовые файлы (*.txt)|*.txt'

в этом случае диалог будет показывать только txt-файлы. Само собой, что exe будут скрыты.

А логические операторы использовать нельзя. Ты хоть бы справку открыл и почитал.

Добавлено через 3 минуты и 9 секунд
http://docwiki.embarcadero.com/Libraries/X...enDialog.Filter
вставь через точку с запятой много-много разных или основных расширений, кроме exe
PM MAIL   Вверх
Агрох
Дата 3.12.2013, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.4.2013
Где: Москва

Репутация: 3
Всего: 6



Akella, справку читал. Там не сказано что однозначно нельзя, просто не упоминается. Уже сталкивался с ситуациями, когда в справке чего то нет, а на самом деле это есть и решил уточнить у знатоков.

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

Задача стоит в том чтобы работать со всеми файлами, кроме exe. Что то вроде создания ссылок на файлы. Но ссылка на exe файл отличается от ссылки на прочие файлы.
Вбивать все возможные варианты расширений, кроме exe, это не лучшее решение проблемы, т.к. явно не указано с какими конкретно расширениями придётся работать. Даже если взять только расширения текстовых файлов, всех видов офисных файлов, основных графических то это уже по крайней мере несколько десятков.

Коли вы говорите, что точно нельзя использовать логические операторы в TOpenDialog->Filters то поверю.

Тогда задам вопрос иначе: есть ли компонент, аналогичный TOpenDialog, в котором можно настраивать фильтр с использованием логических операторов, или с фиксированной настройкой "все кроме"? Не хотелось бы писать свой диалог.

Можно конечно вообще открывать без фильтра, а потом уже говорить пользователю что "Выбранный файл это exe" и, соответственно, "Выбранный файл не exe".
--------------------
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
Akella
Дата 3.12.2013, 13:33 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Агрох @  3.12.2013,  11:17 Найти цитируемый пост)
 Там не сказано что однозначно нельзя, просто не упоминается. 

Странная у тебя логика.

Добавлено через 2 минуты и 10 секунд
Цитата(Агрох @  3.12.2013,  11:17 Найти цитируемый пост)
есть ли компонент, аналогичный TOpenDialog, в котором можно настраивать фильтр с использованием логических операторов


я не встречал, т.к. про такую экзотику первый раз слышу
PM MAIL   Вверх
Агрох
Дата 3.12.2013, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.4.2013
Где: Москва

Репутация: 3
Всего: 6



Цитата(Akella @  3.12.2013,  14:33 Найти цитируемый пост)

Странная у тебя логика.


Всё что не запрещено - разрешено. smile  

Цитата(Akella @  3.12.2013,  14:33 Найти цитируемый пост)
я не встречал, т.к. про такую экзотику первый раз слышу


Ну экзотика это сильно сказано. Такие настройки фильтров при поиске и отображении файлов есть в популярном ПО. В уже упомянутой винде, например (поиск через проводник, NOT *.exe). В TotalCommander-е и аналогах (поиск файлов | *.exe). Просто у вас никогда не было необходимости ими пользоваться. У меня правда тоже.
--------------------
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
Akella
Дата 3.12.2013, 16:34 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Агрох @  3.12.2013,  15:54 Найти цитируемый пост)
В уже упомянутой винде, например (поиск через проводник, NOT *.exe). В TotalCommander-е и аналогах (поиск файлов | *.exe). 


это что, диалоги открытия файлов?
PM MAIL   Вверх
Агрох
Дата 3.12.2013, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.4.2013
Где: Москва

Репутация: 3
Всего: 6



Цитата(Akella @  3.12.2013,  17:34 Найти цитируемый пост)
это что, диалоги открытия файлов?


В диалоге открытия файла используется поиск файлов по указанному фильтру. А мы просто говорим, какой из заранее заготовленных фильтров использовать. Нет?
Там необязательно использовать только фильтр типа *.txt. Прекрасно работает и фильтр *абракадабра*.* - ищет любой файл, в названии которого есть слово абракадабра.

И кстати, найдите 10 отличий проводника от диалога открытия файла.

Почти полностью решил задачу, используя пример отсюда: http://forum.vingrad.ru/forum/topic-30939/15.html
Правда факт наличия исключённого файла всё равно видно. Он отображается как файл без названия, расширения и иконки. Главное - его нельзя открыть.

Код

procedure TForm1.OpenDialog1IncludeItem(const OFN: TOFNotifyEx; var Include: Boolean);
var
  sr: TStrRet;
  FileName: string;
  IDL:PItemIDList;
begin
  ofn.psf.GetDisplayNameOf(ofn.pidl, SHGDN_FORPARSING, sr);
  case sr.uType of
    STRRET_CSTR:    FileName  :=  sr.cStr;
    STRRET_WSTR:    FileName  :=  sr.pOleStr;
    STRRET_OFFSET:  FileName  :=  PChar(Cardinal(ofn.pidl)+sr.uOffset);
  end;
  IDL:=ofn.pidl;

  if pos('.exe', FileName) = Length(FileName) - 3 then
  begin
    Include := false;

    try
      IDL^.mkid.abID[0]:=0;
    except

    end;
  end;
end;


TOpenDialog.Options : ofEnableIncludeNotify - включить, ofOldStyleDialog - выключить. В Uses добавить ShlObj.

Это сообщение отредактировал(а) Агрох - 3.12.2013, 17:00
--------------------
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.