<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58298&amp;view=findpost&amp;p=391288</guid>
        <pubDate>Tue, 29 Jun 2004 12:44:02 +0000</pubDate>
        <title>Пишем Файл-броузер</title>
        <link>https://forum.sources.ru/index.php?showtopic=58298&amp;view=findpost&amp;p=391288</link>
        <description><![CDATA[myaut: <span class='tag-size' data-value='21' style='font-size:21pt;'>Пишем файл-броузер</span><br>
<br>
Итак попробуем написать файл броузер собственными руками на базе компонентов DirectoryListBox, <strong class='tag-b'>DriveComboBox</strong>, <strong class='tag-b'>FileListBox</strong>.<br>
<br>
Поставим задачу расширения дизайна этих компонентов. Мы не будем менять их код. Мы создадим на форме три кнопки, <strong class='tag-b'>DriveComboBox</strong>, <strong class='tag-b'>FileListBox</strong> сделаем невидимыми, в заменим их <br>
<strong class='tag-b'>ComboBox</strong> и <strong class='tag-b'>ListBox</strong> компонентами соответсвенно.<br>
<br>
Сначала проиницилизируем <strong class='tag-b'>ComboBox</strong>:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#define USER_PATH DriveComboBox1-&#62;Items-&#62;Count</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Стандартные папки:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">AnsiString SystemDir, WindowsDir, TempDir;</div><div class="code_line">AnsiString MyDocumentsFolder ,Desktop;</div><div class="code_line">&nbsp;</div><div class="code_line">...</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;char specfolder[MAX_PATH];</div><div class="code_line">&nbsp;GetSystemDirectory(specfolder,100);</div><div class="code_line">&nbsp;SystemDir = specfolder;</div><div class="code_line">&nbsp;GetWindowsDirectory(specfolder,100);</div><div class="code_line">&nbsp;WindowsDir=specfolder;</div><div class="code_line">&nbsp;TempDir = WindowsDir+&quot;\Temp&quot;;</div><div class="code_line">&nbsp;SHGetSpecialFolderPath(Handle, specfolder, 0x0005, false);</div><div class="code_line">&nbsp;MyDocumentsFolder = specfolder;</div><div class="code_line">&nbsp;SHGetSpecialFolderPath(Handle, specfolder, 0x0000, false);</div><div class="code_line">&nbsp;Desktop = specfolder;</div></ol></div></div></div></div><br>
<br>
Теперь мы знаем местоположение и буквы дисков компьютера. Осталось заполнить полученными данными <strong class='tag-b'>ComboBox</strong>.<br>
<br>
Напишем специальную структуру, и создадим массив на её базе:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">enum TPathType {ptDestkop, ptNetworkDrive , ptHardDisk, ptCdrom, ptFloppy, ptDisk,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ptMyDocuments, ptWinSystem, ptWindows, ptWinTemp,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ptUserDefined };</div><div class="code_line">&nbsp;</div><div class="code_line">struct TPath {</div><div class="code_line">&nbsp;&nbsp;TPathType PathType; //Тип пути</div><div class="code_line">&nbsp;&nbsp;AnsiString DefDir; &nbsp;//Каталог пути</div><div class="code_line">&nbsp;&nbsp;AnsiString Name; &nbsp; &nbsp;//Имя пути</div><div class="code_line">}StdPath[40];</div></ol></div></div></div></div><br>
<br>
Для определения типа пути по его каталогу и размещения полученных данных в массиве напишем функцию:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void AddUserPath(AnsiString DefDir, AnsiString Name, int PathID) {</div><div class="code_line">&nbsp;&nbsp; StdPath[PathID].Name = Name;</div><div class="code_line">&nbsp;&nbsp; StdPath[PathID].DefDir = DefDir;</div><div class="code_line">&nbsp;&nbsp; Form1-&#62;ComboBox1-&#62;Items-&#62;Add(DefDir+&quot; &nbsp;&quot;+Name+&quot;&quot;);</div><div class="code_line">&nbsp;&nbsp; if(DefDir.Length()==2) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; switch(GetDriveType(DefDir.c_str())) &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;case DRIVE_CDROM:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; StdPath[PathID].PathType = ptCdrom;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;case DRIVE_REMOTE:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; StdPath[PathID].PathType = ptNetworkDrive;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;case DRIVE_FIXED:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; StdPath[PathID].PathType = ptHardDisk;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;case DRIVE_REMOVABLE:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;StdPath[PathID].PathType = ptFloppy;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;default:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; StdPath[PathID].PathType = ptDisk;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; }</div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">&nbsp;&nbsp; if(DefDir==MyDocumentsFolder) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;StdPath[PathID].PathType = ptMyDocuments;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">&nbsp;&nbsp; if(DefDir==SystemDir) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;StdPath[PathID].PathType = ptWinSystem;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">&nbsp;&nbsp; if(DefDir==WindowsDir) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;StdPath[PathID].PathType = ptWindows;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">&nbsp;&nbsp; if(DefDir==TempDir) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;StdPath[PathID].PathType = ptWinTemp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">&nbsp;&nbsp; if(DefDir==Desktop) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;StdPath[PathID].PathType = ptDestkop;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">&nbsp;&nbsp; StdPath[PathID].PathType = ptUserDefined;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Благодаря функции <strong class='tag-b'>GetDriveType</strong> мы узнаём тип данного диска.<br>
<br>
Теперь мы можем проинициализировать ComboBox:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;for(int i=0; i&#60;DriveComboBox1-&#62;Items-&#62;Count; i++) {</div><div class="code_line">&nbsp;&nbsp; AddUserPath(DriveComboBox1-&#62;Items-&#62;Strings[i].SubString(1,2),DriveComboBox1-&#62;Items-&#62;Strings[i].c_str()+3,i);</div><div class="code_line">&nbsp;}</div><div class="code_line">&nbsp;AddUserPath(SystemDir, &quot;Системная папка&quot;, USER_PATH);</div><div class="code_line">&nbsp;AddUserPath(WindowsDir, &quot;Папка Windows&quot;, USER_PATH+1);</div><div class="code_line">&nbsp;AddUserPath(TempDir, &quot;Временные файлы&quot;, USER_PATH+2);</div><div class="code_line">&nbsp;AddUserPath(MyDocumentsFolder, &quot;Мои документы&quot;, USER_PATH+3);</div><div class="code_line">&nbsp;AddUserPath(Desktop, &quot;Рабочий стол&quot;, USER_PATH+4);</div></ol></div></div></div></div><br>
<br>
Для каждого типа пути нужна своя картинка. Проинициализируем её.<br>
Мы разместим все картинки в папочке Interface. Каждому типу пути поставим в соответствие свою картинку:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">AnsiString PathIconNames[] = {</div><div class="code_line">&nbsp;&nbsp;&quot;Destkop.bmp&quot;,</div><div class="code_line">&nbsp;&nbsp;&quot;NetDisk.bmp&quot;,</div><div class="code_line">&nbsp;&nbsp;&quot;HardDisk.bmp&quot;,</div><div class="code_line">&nbsp;&nbsp;&quot;CDDisk.bmp&quot;,</div><div class="code_line">&nbsp;&nbsp;&quot;Floppy.bmp&quot;,</div><div class="code_line">&nbsp;&nbsp;&quot;Disk.bmp&quot;,</div><div class="code_line">&nbsp;&nbsp;&quot;Mydocs.bmp&quot;,</div><div class="code_line">&nbsp;&nbsp;&quot;Winsys.bmp&quot;,</div><div class="code_line">&nbsp;&nbsp;&quot;Windows.bmp&quot;,</div><div class="code_line">&nbsp;&nbsp;&quot;WinTemp.bmp&quot;,</div><div class="code_line">&nbsp;&nbsp;&quot;User.bmp&quot;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">Graphics::TBitmap* PathIcons[ptUserDefined+1];</div></ol></div></div></div></div><br>
<br>
Проинициализируем их:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;for(int i=0; i&#60;ptUserDefined+1; i++) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;PathIcons[i] = new Graphics::TBitmap();</div><div class="code_line">&nbsp;&nbsp; &nbsp;PathIcons[i]-&#62;LoadFromFile(&quot;interface\&quot; + PathIconNames[i]);</div><div class="code_line">&nbsp;&nbsp; &nbsp;PathIcons[i]-&#62;Transparent = true;</div><div class="code_line">&nbsp;}</div></ol></div></div></div></div><br>
<br>
И удалим:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">void __fastcall TForm1::FormDestroy(TObject *Sender)</div><div class="code_line">{</div><div class="code_line">&nbsp;for(int i=0; i&#60;ptUserDefined+1; i++) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;delete PathIcons[i];</div><div class="code_line">&nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Теперь самое интересное - отрисовка элементов <strong class='tag-b'>ComboBox</strong>. Для этого свойство <strong class='tag-b'>Style</strong> надо установить в csOwnerDrawFixed (только отрисовка), выбрать <strong class='tag-b'>ItemHeight</strong> по размерам картинок (у меня было значение 24 для картинок 16 на 16), а событие OnDrawItem заполнить следующим кодом:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void __fastcall TForm1::ComboBox1DrawItem(TWinControl *Control, int Index,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;TRect &amp;Rect, TOwnerDrawState State)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; ComboBox1-&#62;Canvas-&#62;FillRect(Rect);</div><div class="code_line">&nbsp;&nbsp; ComboBox1-&#62;Canvas-&#62;Draw(Rect.Left+4,Rect.Top+4, PathIcons[StdPath[Index].PathType]);</div><div class="code_line">if(StdPath[Index].PathType&#62;=ptNetworkDrive &amp;&amp; StdPath[Index].PathType&#60;=ptDisk) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;ComboBox1-&#62;Canvas-&#62;TextOut(Rect.Left+48, Rect.Top+6, StdPath[Index].Name);</div><div class="code_line">&nbsp;&nbsp; &nbsp;ComboBox1-&#62;Canvas-&#62;TextOut(Rect.Left+28, Rect.Top+6, StdPath[Index].DefDir);</div><div class="code_line">&nbsp;}</div><div class="code_line">else {</div><div class="code_line">&nbsp;&nbsp; ComboBox1-&#62;Canvas-&#62;TextOut(Rect.Left+28, Rect.Top+6, StdPath[Index].Name);</div><div class="code_line">}</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Половина дела сделанa. Теперь на очереди <strong class='tag-b'>FileListBox</strong>.<br>
Так как картинки из этого компонента нам не подходят, а <strong class='tag-b'>TIcon</strong> не может менять размеры значка, мы опять всё пишем руками :)<br>
Сначала напишем функцию <strong class='tag-b'>SetPath</strong>. Онабудет вызываться при изменении текущей папки.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">void SetPath(AnsiString NewPath) {</div><div class="code_line">&nbsp;&nbsp;if(DirectoryExists(NewPath)) {</div><div class="code_line">&nbsp;&nbsp; Path = NewPath;</div><div class="code_line">&nbsp;&nbsp; Form1-&#62;FileListBox1-&#62;Directory=Path;</div><div class="code_line">&nbsp;&nbsp; if(Form1-&#62;DirectoryListBox1-&#62;Directory!=Path) Form1-&#62;DirectoryListBox1-&#62;Directory=Path;</div><div class="code_line">&nbsp;&nbsp; Form1-&#62;ListBox1-&#62;Clear();</div><div class="code_line">&nbsp;&nbsp; Form1-&#62;ListBox1-&#62;Items-&#62;AddStrings(Form1-&#62;FileListBox1-&#62;Items);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><br>
В конструктор добавится следующая строка: SetPath(MyDocumentsFolder); Теперь при стрте приложения текущей папкой будет &quot;мои документы&quot;.<br>
Наполнится кодом <strong class='tag-b'>OnChange</strong> ComboBox&#39;а:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void __fastcall TForm1::ComboBox1Change(TObject *Sender)</div><div class="code_line">{</div><div class="code_line">&nbsp;SetPath(StdPath[ComboBox1-&#62;ItemIndex].DefDir);</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Теперь осталось написать отрисовку элемента в <strong class='tag-b'>ListBox</strong>. Установим Для этого свойство <strong class='tag-b'>Style</strong> надо установить в lbOwnerDrawVariable (отрисовка и подготовка к отрисовке). Выполним подготовительные действия для значков: установим папку со значками и их размер:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int IconSize=16;</div><div class="code_line">AnsiString IconsDir;</div><div class="code_line">&nbsp;</div><div class="code_line">...</div><div class="code_line">&nbsp;</div><div class="code_line">IconsDir = ExtractFilePath(Application-&#62;ExeName)+&quot;\interface\files16\&quot;;</div></ol></div></div></div></div><br>
<br>
Сама отрисовка:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;TRect &amp;Rect, TOwnerDrawState State)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;HICON hTypeIcon;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ListBox1-&#62;Canvas-&#62;Brush-&#62;Style = bsSolid;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ListBox1-&#62;Canvas-&#62;Rectangle(Rect);</div><div class="code_line">&nbsp;&nbsp; &nbsp;ListBox1-&#62;Canvas-&#62;Brush-&#62;Style = bsClear;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ListBox1-&#62;Canvas-&#62;TextOut(Rect.Left+IconSize+4,Rect.Top+Rect.Height()/2-10,ListBox1-&#62;Items-&#62;Strings[Index]);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(FileExists(IconsDir+AnsiLowerCase(ExtractFileExt(ListBox1-&#62;Items-&#62;Strings[Index]).SubString(2,3))+&quot;.ico&quot;)) { //Если есть значок для этого типа файлов грузим его, если нет то грузим default.ico.</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;hTypeIcon = LoadImage(NULL, (IconsDir+AnsiLowerCase(ExtractFileExt(ListBox1-&#62;Items-&#62;Strings[Index]).SubString(2,3))+&quot;.ico&quot;).c_str(), IMAGE_ICON, IconSize, IconSize, LR_LOADFROMFILE);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; else {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;hTypeIcon = LoadImage(NULL, &quot;interface\files16\default.ico&quot;, IMAGE_ICON, IconSize, IconSize, LR_LOADFROMFILE);</div><div class="code_line">&nbsp;&nbsp; &nbsp; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; DrawIconEx(ListBox1-&#62;Canvas-&#62;Handle, Rect.Left+2, Rect.Top+2, hTypeIcon, IconSize,IconSize, 0, NULL, DI_NORMAL);</div><div class="code_line">&nbsp;&nbsp; &nbsp; DestroyIcon(hTypeIcon);</div><div class="code_line">}</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">void __fastcall TForm1::ListBox1MeasureItem(TWinControl *Control,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;int Index, int &amp;Height)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;//Подготока к отрисовке</div><div class="code_line">&nbsp;&nbsp; &nbsp;ListBox1-&#62;Canvas-&#62;Pen-&#62;Color = 0xFAFAFA;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(ListBox1-&#62;ItemIndex == Index) { //Если этот элемент текущий</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ListBox1-&#62;Canvas-&#62;Brush-&#62;Color=clNavy;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;else {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ListBox1-&#62;Canvas-&#62;Brush-&#62;Color=clWhite;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; Height = IconSize+4; //Высота элемента</div><div class="code_line">&nbsp;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Мы использовали функцию <strong class='tag-b'>LoadImage</strong>. Это универсальная функция загрузки иконок, курсоров, битмапов из ресурса. Если использовать флаг LR_LOADFROMFILE, загрузка происходит из файла. Первыц параметр - Имя ресурса или путь к файлу. Второй параметр - тип картинки. Третий и четвёртый - размеры.<br>
<br>
И, наконец, последний штрих, выбор размера значков. Для этого нам нужны три кнопки с заговками 16, 32 и 48<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">void __fastcall TForm1::Button1Click(TObject *Sender)</div><div class="code_line">{</div><div class="code_line">&nbsp;IconSize=16;</div><div class="code_line">&nbsp;ListBox1-&#62;Repaint();</div><div class="code_line">}</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">void __fastcall TForm1::Button2Click(TObject *Sender)</div><div class="code_line">{</div><div class="code_line">&nbsp;IconSize=32;</div><div class="code_line">&nbsp;ListBox1-&#62;Repaint();</div><div class="code_line">}</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">void __fastcall TForm1::Button3Click(TObject *Sender)</div><div class="code_line">{</div><div class="code_line">&nbsp;IconSize=48;</div><div class="code_line">&nbsp;ListBox1-&#62;Repaint();</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Файл-броузер готов&#33;<br>
<br>
Оригинал и все необходимые файлы можно найти здесь: <a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=57649' target='_blank'>Пишем файл-броузер</a>]]></description>
        <author>myaut</author>
        <category>C/C++ FAQ</category>
      </item>
	
      </channel>
      </rss>
	