Курсовая работа: Файловый менеджер
Выводы
Результатом данной курсовой работы является программа для работы с файлами. Программа представляет собой необходимый минимум для выполнения этой задачи.
Программа может иметь более развитый интерфейс и двупанельный вид — в общем случае имеют две равноценных панели для списка файлов, а в данном случае программа имеет однопанельный вид. В данной курсовой работе это не было реализовано.
Список используемой литературы
1. Общая информация
http://yandex.ru/
http://ru.wikipedia.org/
2. Информация о языке программирования
Пауэрс Л., Снелл М. Microsoft Visual Studio 2008 => Microsoft Visual Studio 2008 Unleashed by Lars Powers and Mike Snell.
3. Алгоритмы программы
http://www.progz.ru/
Листинги
1.1. Листинг Unit1.h
enum {ImageWindows, ImageFloppy, ImageDrive, ImageCD, ImageMyComp,ImageCloseFolder, ImageOpenFolder};
void strcat0(char * &dest,char *source); //Соединение строк с оставлением нулевого символа
void finstr(char *dest);
unsigned int lengthfinstr(char *dest);
struct DROPFILES {
DWORD pFiles; // offset of file list
POINT pt; // drop point (client coords)
BOOL fNC; // is it on NonClient area
// and pt is in screen coords
BOOL fWide; // WIDE character switch
};
class TForm1 : public TForm
{
__published: // IDE-managed Components
TMainMenu *MainMenu1;
TMenuItem *NFile;
TTreeView *TreeView1;
TSplitter *Splitter1;
TListView *ListView1;
TImageList *ImageList1;
TImageList *ImageList2;
TMenuItem *NProperty;
TImageList *ImageList3;
TImageList *ImageList4;
TControlBar *ControlBar1;
TToolBar *TBMain;
void __fastcall TreeView1Expanding(TObject *Sender,
TTreeNode *Node, bool &AllowExpansion);
void __fastcall TreeView1Compare(TObject *Sender, TTreeNode *Node1,
TTreeNode *Node2, int Data, int &Compare);
void __fastcall TreeView1Expanded(TObject *Sender,
TTreeNode *Node);
void __fastcall TreeView1Collapsing(TObject *Sender,
TTreeNode *Node, bool &AllowCollapse);
void __fastcall TreeView1Editing(TObject *Sender, TTreeNode *Node,
bool &AllowEdit);
void __fastcall ListView1Compare(TObject *Sender, TListItem *Item1,
TListItem *Item2, int Data, int &Compare);
void __fastcall ListView1DblClick(TObject *Sender);
void __fastcall ListView1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall TreeView1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept);
void __fastcall TreeView1DragDrop(TObject *Sender, TObject *Source,
int X, int Y);
void __fastcall TreeView1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall NPropertyClick(TObject *Sender);
void __fastcall NOpenClick(TObject *Sender);
void __fastcall NExitClick(TObject *Sender);
void __fastcall NDeleteClick(TObject *Sender);
void __fastcall TBDeleteClick(TObject *Sender);
void __fastcall TBPropertyClick(TObject *Sender);
void __fastcall TBExitClick(TObject *Sender);
void __fastcall NViewClick(TObject *Sender);
void __fastcall NPanelClick(TObject *Sender);
void __fastcall NStatusBarClick(TObject *Sender);
void __fastcall TBUpClick(TObject *Sender);
void __fastcall TreeView1Edited(TObject *Sender, TTreeNode *Node,
AnsiString &S);
void __fastcall ListView1Edited(TObject *Sender, TListItem *Item,
AnsiString &S);
void __fastcall NRenameClick(TObject *Sender);
void __fastcall TBRenameClick(TObject *Sender);
void __fastcall NIconClick(TObject *Sender);
void __fastcall NSmallIconClick(TObject *Sender);
void __fastcall NListClick(TObject *Sender);
void __fastcall NReportClick(TObject *Sender);
void __fastcall ListView1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept);
void __fastcall ListView1DragDrop(TObject *Sender, TObject *Source,
int X, int Y);
void __fastcall TBUpdateClick(TObject *Sender);
void __fastcall TreeView1Click(TObject *Sender);
void __fastcall TBPasteClick(TObject *Sender);
void __fastcall TBCopyClick(TObject *Sender);
void __fastcall TBCutClick(TObject *Sender);
void __fastcall NUpdateClick(TObject *Sender);
void __fastcall NCutClick(TObject *Sender);
void __fastcall NPasteClick(TObject *Sender);
void __fastcall NCopyClick(TObject *Sender);
void __fastcall NSelectAllClick(TObject *Sender);
void __fastcall ListView1ColumnClick(TObject *Sender,
TListColumn *Column);
void __fastcall NSort0Click(TObject *Sender);
void __fastcall NCreateFolderClick(TObject *Sender);
void __fastcall NFileClick(TObject *Sender);
void __fastcall NEditClick(TObject *Sender);
void __fastcall ListView1ContextPopup(TObject *Sender,
TPoint &MousePos, bool &Handled);
void __fastcall TreeView1ContextPopup(TObject *Sender,
TPoint &MousePos, bool &Handled);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
void ShowDrives();
void ViewChild(TTreeNode *child);
void DeleteChild(TTreeNode *Node);
void ViewFailAndFolderInListView(AnsiString dir);
void ExpandTreeForFile(AnsiString FileName);
int FileAndFolderOperation(char *frombuf, char *tobuf, unsigned int operation);
TTreeNode* AddChildInNodeTree(TTreeNode *Node, AnsiString Dir);
TListItem *AddItemInListView(TSearchRec sr,AnsiString dir);
void ViewProperty();
void OpenFileOrFolder(); //Открыть в Listview файл или папку
void DeleteFileOrFolder();
void PrepareBufForOperationInListView(char * &frombuf);
AnsiString RenameFileOrFolder(AnsiString);
void RecursTree(TTreeNode *node,bool); //Рекурсивное обновление дерева
void UpdateTreeView(bool); //Функция запуска рекурсивного обновления дерева
void UpdateListView(bool); //Функция обновления listview
void UpdateAll(bool);
void PasteFileFromClipboard(); //Вставить из буфера
void CopyFileToClipboard(bool); //Копировать файлы в буфер
void CreateFol();
void UpdateLabel();
} ;
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
1.2. Листинг Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <shellapi.h>
#include "Unit1.h"
#include <winbase.h>
#include <vector.h>
#include "PropertyFile.h"
#include "PropertyDrive.h"
#include <ole2.h>
#define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect")
using namespace std;
vector <int> set_drive_num; //Вектор с номерами установленных дисков
TTreeNode *head, *tpItem; //Голова и темповая переменная
//указатель на верхний отображаемый
//узел для отсутствия скачков
unsigned int type_file_operation_drag_drop;
//Тип операции при drag drop
AnsiString CurrentDir=""; //Текущий каталог
TViewStyle StyleListView=vsReport;
Set<char, 'A', 'Z'> DiskIn;
bool DragnDrop=true; //Флаг разрешения перетаскивания
int ColumnToSort=0; //Номер колонки по которой сортируют
int Direct=1; //Направление соритировки
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
void FirstUpOtherDown(char *str) //Опускает все буквы кроме первой
void FirstUpOtherDown(AnsiString &str)
str[1]-=32;
void GetDrives() //Определяет установленные диски
{ //и сохраняет их номера в set_drive_num
unsigned int set_drive=GetLogicalDrives();
for(int i=0;set_drive!=0;i++)
{
if(set_drive%2) set_drive_num.push_back(i);
set_drive>>=1;
}
}
void TForm1::ShowDrives() //Отображает диски в дереве
{
char str[10];
char inf[20];
for(unsigned int i=0;i<set_drive_num.size();i++)
{
TTreeNode *temp; //Загрузка узла
str[0]=(char)('A'+set_drive_num[i]);
str[1]='\0';
strcat(str,":\\");
if(set_drive_num[i]!=0 && set_drive_num[i]!=1) //Заполнение информационного поля
{
if(!GetVolumeInformation(str,inf,20,NULL,NULL,NULL,NULL,NULL)) //Получение метки тома
strcpy(inf,"");
}
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9