Crash-512 |
Отправлено: 15.12.2006, 11:32 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Не подскажите, как сделать, чтобы в окошке отображалось содержимое папки?.. В папке должны быть только ярлыки. Не нужны ни опции переименования, ни опции сортировки/вида... Просто отображение ярлыков, которые находятся в папки на диске...
Предполагаю, что это должно делаться при помощи ListView... Но не представляю, как...
Заранее всем спасибо=)
|
|
olegenty |
Отправлено: 15.12.2006, 12:49 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
нарой на форуме пример Doga для VirtualTreeView, там всё приподробно продемонстрировано
|
|
Crash-512 |
Отправлено: 15.12.2006, 15:17 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Я тут написал... В примере не отображаются значки, хотя писал по книжке.
З.Ы. Папки и расширения файлов не отображаются преднамеренно=)
Прикрепил исходник...
Вот код:
CODE |
//---------------------------------------------------------------------------
#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);
}
//---------------------------------------------------------------------------
|
Не скажите, где ошибся?..
|
|
|