Я тут написал... В примере не отображаются значки, хотя писал по книжке. З.Ы. Папки и расширения файлов не отображаются преднамеренно=) Прикрепил исходник... | Код | //--------------------------------------------------------------------------- #include <vcl.h> #include "FileCtrl.hpp" #pragma hdrstop
#include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; AnsiString Dir; // Отображаемая папка TListItem *Selected; // Выделенный элемент //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormShow(TObject *Sender) { // Начальное значение отображаемой папки Dir = "E:\\Games"; if (Dir[Dir.Length()] != '\\') Dir = Dir + "\\"; Find(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // Открытие папки SelectDirectory("Выберите папку", "", Dir); if (Dir[Dir.Length()] != '\\') Dir = Dir + "\\"; Find(); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { ListView1->ViewStyle = vsIcon; // крупные значки } //--------------------------------------------------------------------------- void __fastcall TForm1::ListView1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { // запоминание выделенного элемента Selected = ListView1->GetItemAt(X, Y); } //--------------------------------------------------------------------------- void __fastcall TForm1::ListView1DblClick(TObject *Sender) { // двойной щелчок на элементе if (Selected) { ShellExecute(Handle, "open", Selected->Caption.c_str(), NULL, NULL, SW_SHOW); } } //=========================================================================== //=====FIND================================================================== //=========================================================================== void __fastcall TForm1::Find(void) { ListView1->Items->BeginUpdate(); //начало блокировки списка ListView1->Items->Clear(); //очистка списка StaticText1->Caption = Dir; ViewDir(); // уход на поиск ListView1->Items->EndUpdate(); } //=========================================================================== //====VIEW DIR=============================================================== //=========================================================================== void __fastcall TForm1::ViewDir(void) { // основная процедура поиска TSearchRec SR; int ires, TBegin; TListItem *NewItem; TSHFileInfo FileInfo;
TIcon *Icon = new TIcon;
Form1->ImageListIcon->Clear(); Form1->ImageListIcon->AddIcon(Icon);
ChDir(Dir); // смена каталога
// начало поиска ires = FindFirst("*.*", faHidden+faSysFile, SR); while (ires == 0) { if ((SR.Name != ".") && (SR.Name != "..")) { AnsiString FName; // занесение элемента в список NewItem = Form1->ListView1->Items->Add(); FName = SR.Name; NewItem->Caption = FName.SubString(0,FName.Length()-4); // задание пиктограмм SHGetFileInfo((Dir + SR.Name).c_str(), 0, &FileInfo, sizeof(FileInfo), SHGFI_ICON | SHGFI_LARGEICON); Icon->Handle = FileInfo.hIcon; Form1->ImageListIcon->AddIcon(Icon); NewItem->ImageIndex = Form1->ImageListIcon->Count-1; // отметка элемента как файла NewItem->OverlayIndex = 1; } // продолжение поиска ires = FindNext(SR); } // завершение поиска файлов FindClose(SR); } //---------------------------------------------------------------------------
|
Не скажите, где ошибся?..
Присоединённый файл ( Кол-во скачиваний: 5 )
FolderView.zip 55,91 Kb
|