<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MikeSoft &#187; Метки &#187; TFileOpenDialog</title>
	<atom:link href="http://mikesoft.ws/tag/tfileopendialog/feed/" rel="self" type="application/rss+xml" />
	<link>http://mikesoft.ws</link>
	<description>Practical Software</description>
	<lastBuildDate>Sun, 15 Nov 2009 10:37:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>И снова о пользе Windows Vista</title>
		<link>http://mikesoft.ws/2007/11/22/windows-vista-usability/</link>
		<comments>http://mikesoft.ws/2007/11/22/windows-vista-usability/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 09:58:42 +0000</pubDate>
		<dc:creator>Smike</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[TFileOpenDialog]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://mikesoft.ws/?p=97</guid>
		<description><![CDATA[Во время разработки своей новой программы я решил вплотную взглянуть на новый компонент Delphi 2007 — TFileOpenDialog, который инкапсулирует современный диалог открытия файлов в Windows Vista. Те функции, что я в нем увидел, меня приятно удивили. В первую очередь, я нашел в нем ту функциональность, которая как раз была мне нужна. В приложении необходимо создавать [...]]]></description>
			<content:encoded><![CDATA[<p>Во время разработки своей новой программы я решил вплотную взглянуть на новый  компонент Delphi 2007 — <span style="font-weight: bold;">TFileOpenDialog</span>,  который инкапсулирует современный диалог открытия файлов в <span style="font-weight: bold;">Windows Vista</span>. Те функции, что я в нем увидел,  меня приятно удивили.<span id="more-97"></span></p>
<p>В первую очередь, я нашел в нем ту  функциональность, которая как раз была мне нужна. В приложении необходимо  создавать и выбирать файлы в определенной папке и её подпапках. В TOpenDialog  нельзя запретить смену каталога. В TFileOpenDialog — можно! Появилось событие  <span style="font-weight: bold;">OnFolderChanging</span>, где вот таким вот  простым кодом мы можем запретить, например, переходить в папки нижнего уровня по  сравнению с начальной:</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">FolderChangingEvent</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">var</span> CanChange<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Boolean</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  CanChange <span style="color: #000066;">:</span><span style="color: #000066;">=</span> AnsiStartsText<span style="color: #000066;">&#40;</span>FileOpenDialog1<span style="color: #000066;">.</span><span style="color: #006600;">DefaultFolder</span><span style="color: #000066;">,</span>
                              FileOpenDialog1<span style="color: #000066;">.</span><span style="color: #006600;">FileName</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

<p>Это  как раз реализует нужную мне функциональность. Это одна из тех &laquo;мелочей&raquo;,  которыми наполнена Windows Vista, но которые так приятно облегчают работу и  программистов, и пользователей.</p>
<p>Какие же еще возможности приподносит нам  TFileOpenDialog? Это события <span style="font-weight: bold;">OnFileOkClick</span>, которое позволяет запретить  закрывать диалог в случае неудовлетворительного выбора, и <span style="font-weight: bold;">OnShareViolation</span>, позволяющее задавать реакцию  на выбор файлов, используемых другими приложениями.</p>
<p>Сравним также свойства <span style="font-weight: bold;">Options</span> старого и нового  диалогов. Визуальное сравнение возможных значений этих свойств дало понять, что  большинство параметров имеют аналоги и в старом диалоге (выделены жирным):</p>
<pre>TFileDialogOption = (
 <span style="font-weight: bold;">fdoOverWritePrompt</span>,
 fdoStrictFileTypes,
 <span style="font-weight: bold;">fdoNoChangeDir</span>,
 fdoPickFolders,
 fdoForceFileSystem,
 fdoAllNonStorageItems,
 <span style="font-weight: bold;">fdoNoValidate</span>,
 <span style="font-weight: bold;">fdoAllowMultiSelect</span>,
 <span style="font-weight: bold;">fdoPathMustExist</span>,
 <span style="font-weight: bold;">fdoFileMustExist</span>,
 <span style="font-weight: bold;">fdoCreatePrompt</span>,
 <span style="font-weight: bold;">fdoShareAware</span>,
 <span style="font-weight: bold;">fdoNoReadOnlyReturn</span>,
 <span style="font-weight: bold;">fdoNoTestFileCreate</span>,
 fdoHideMRUPlaces,
 fdoHidePinnedPlaces,
 <span style="font-weight: bold;">fdoNoDereferenceLinks</span>,
 <span style="font-weight: bold;">fdoDontAddToRecent</span>,
 <span style="font-weight: bold;">fdoForceShowHidden</span>,
 fdoDefaultNoMiniMode,
 fdoForcePreviewPaneOn
);</pre>
<p>Остановимся на значениях, не имеющих аналогов. Часть из  них настраивает вид самого диалога:</p>
<ul>
<li><span style="font-weight: bold;">fdoForcePreviewPaneOn</span> отображает  панель предварительного просмотра;</li>
<li><span style="font-weight: bold;">fdoDefaultNoMiniMode</span> запрещает  открытие диалога в сжатом виде (только строка ввода имени файла) — только для  диалогов сохранения;</li>
<li><span style="font-weight: bold;">fdoHidePinnedPlaces</span> убирает <span style="font-style: italic;">стандартные</span> избранные ссылки, собственные мы  по прежнему можем задавать (!);</li>
<li><span style="font-weight: bold;">fdoHideMRUPlaces</span> описывается как  &laquo;Hide places of recently opened or saved items&raquo;, но реально мне не удалось пока  понять, о чем идет речь.</li>
</ul>
<p>Значение <span style="font-weight: bold;">fdoPickFolders</span> позволяет использовать диалог  открытия файлов как диалог выбора папок, а <span style="font-weight: bold;">fdoStrictFileTypes</span> позволяет указать, что нужно  сохранять файл только с одним из предопределенных расширений.</p>
<p>А вот  свойство <span style="font-weight: bold;">fdoNoChangeDir</span> хоть и есть среди  возможных значений, но как уверяет справочная система, это значение не  используется. Это и не удивительно, ведь есть более гибкое событие OnFolderChanging.</p>
<p>В новом диалоге есть и другие полезные свойства и  методы. С помощью коллекции <span style="font-weight: bold;">FavoriteLinks</span> можно добавлять собственные избранные ссылки. Свойства <span style="font-weight: bold;">FileNameLabel</span>, <span style="font-weight: bold;">OKButtonLabel</span>, <span style="font-weight: bold;">Title</span> позволяют изменить названия отдельных  элементов интерфейса диалога (текст перед полем ввода файла, текст кнопки OK и  заголовок диалога). Старый TOpenDialog позволял изменять только собственный  заголовок. Коллекция <span style="font-weight: bold;">FileTypes</span> более  наглядно, чем свойство Filter из TOpenDialog позволяет задавать фильтры для  диалога. Особенно удобно, что это индексированный список, таким образом легко  можно проверить, какому расширению соответствует тот или иной тип, используя  свойство <span style="font-weight: bold;">FileTypeIndex</span>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikesoft.ws/2007/11/22/windows-vista-usability/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Удобство, о котором раньше приходилось только мечтать</title>
		<link>http://mikesoft.ws/2007/09/16/dreamed-usability/</link>
		<comments>http://mikesoft.ws/2007/09/16/dreamed-usability/#comments</comments>
		<pubDate>Sun, 16 Sep 2007 09:09:51 +0000</pubDate>
		<dc:creator>Smike</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[TFileOpenDialog]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://mikesoft.ws/?p=85</guid>
		<description><![CDATA[Наверняка перед многими когда-либо вставала задача: открыть ряд файлов одного типа, но расположенных в различных подкаталогах. Если у вас есть Total Commander, то это конечно не составляет труда. Там можно просмотреть все файлы в данной папке и её подпапках, можно вывести результат поиска на панель: Во многих случаях этого достаточно. Эти файлы можно перетянуть в [...]]]></description>
			<content:encoded><![CDATA[<p>Наверняка перед многими когда-либо вставала задача: открыть ряд файлов одного  типа, но расположенных в различных подкаталогах.</p>
<p><span id="more-85"></span></p>
<p>Если у вас есть Total  Commander, то это конечно не составляет труда. Там можно просмотреть все файлы в  данной папке и её подпапках, можно вывести результат поиска на  панель:</p>
<p><a href="http://mikesoft.ws/wp-content/uploads/2009/02/tc.png"><img height="129" width="250" class="alignnone size-medium wp-image-86" title="Total Commander Search" alt="Total Commander Search" src="http://mikesoft.ws/wp-content/uploads/2009/02/tc-250x129.png" /></a></p>
<p>Во многих случаях этого достаточно. Эти файлы можно перетянуть в редактор, браузер или другую программу, поддерживающую вставку файлов с помощью Drag&#8217;n'Drop. Но если программа не поддерживает Drag&#8217;n'Drop? Да и Total Commander может попросту не оказаться под рукой.</p>
<p>В Windows Vista можно легко и просто сразу открыть группу файлов. В диалоге открытия, как и во всех окнах Проводника, есть встроенный поиск.</p>
<p><a href="http://mikesoft.ws/wp-content/uploads/2009/02/opendialog.png"><img height="196" width="250" class="alignnone size-medium wp-image-87" title="opendialog" alt="opendialog" src="http://mikesoft.ws/wp-content/uploads/2009/02/opendialog-250x196.png" /></a></p>
<p>Введя в строку поиска фильтр файлов мы получим список всех нужных файлов во всех вложенных каталогах:</p>
<p><a href="http://mikesoft.ws/wp-content/uploads/2009/02/filter.png"><img height="198" width="250" class="alignnone size-medium wp-image-88" title="filter" alt="filter" src="http://mikesoft.ws/wp-content/uploads/2009/02/filter-250x198.png" /></a></p>
<p><a href="http://mikesoft.ws/wp-content/uploads/2009/02/test.png"><img height="185" width="250" class="alignright size-medium wp-image-89" title="test" alt="test" src="http://mikesoft.ws/wp-content/uploads/2009/02/test-250x185.png" /></a>Проверим, как это работает. Дано: Delphi 2007 &mdash; 1 шт., компоненты TButton, TMemo и новый компонент TFileOpenDialog с закладки Vista Dialogs &mdash; тоже по 1 шт. А также прямые руки &mdash; 2 шт. TFileOpenDialog &mdash; это новый компонент, который представляет собой программный интерфейс для нового диалога открытия файлов в Windows Vista. Чтобы эксперимент удался, нужно выставить у компонента свойство Options := [fdoAllowMultiSelect], остальные значения нас не интересуют. Ну и под конец, чтобы эксперимент удался, пишем следующий код для события клика по кнопке:</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">procedure</span> TForm2<span style="color: #000066;">.</span><span style="color: #006600;">Button1Click</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">if</span> FileOpenDialog1<span style="color: #000066;">.</span><span style="color: #006600;">Execute</span> <span style="color: #000000; font-weight: bold;">then</span>
    Memo1<span style="color: #000066;">.</span><span style="color: #006600;">Lines</span> <span style="color: #000066;">:</span><span style="color: #000066;">=</span> FileOpenDialog1<span style="color: #000066;">.</span><span style="color: #006600;">Files</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

<p>После этого запускаем пример, выбираем какую-нибудь папку, вводим фильтр и получаем следующую картину:</p>
<p><a href="http://mikesoft.ws/wp-content/uploads/2009/02/result.png"><img height="250" width="229" class="alignnone size-medium wp-image-91" title="result" alt="result" src="http://mikesoft.ws/wp-content/uploads/2009/02/result-229x250.png" /></a></p>
<p>Вот так просто решается данная задача в Windows Vista. Все найденные файлы корректно можно получить из диалога, вместе с правильными путями. Так что несмотря на все разговоры об отсутствии чего-либо нового и удобного в этой ОС, здесь полно разных удобств, которые хоть и не всегда заметно, но облегчают нашу работу.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://mikesoft.ws/2007/09/16/dreamed-usability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
