Автор работы: Пользователь скрыл имя, 21 Ноября 2011 в 09:41, дипломная работа
Целью дипломной работы является упростить работу с файлами и каталогами, а также операции над ними. Другими словами, необходимо создать файловый менеджер с поддержкой обзора каталогов, перемещения по ним, копирования, удаления, переименования файлов и каталогов, запуск, правка, поиск файлов по маске и пути, а также mp3-файлов по ID3-параметрам.
Актуальность исследования определяется тем, что сейчас, когда компьютер стал незаменимым атрибутом современной жизни, появилась необходимость в инструменте для работы с файловой структурой, в том числе mp3-файлами.
ВВЕДЕНИЕ
1. АНАЛИЗ ИСХОДНЫХ ДАННЫХ И ПОСТАНОВКА ЗАДАЧИ
1.1 Анализ предметной области
1.2 Анализ аналогов и прототипов
1.3 Перечень задач, подлежащих решению в процессе разработки
1.4 Входная, постоянная, выходная информации
2 ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 Выбор и обоснование средств и методов решения для реализации проекта
2.2 Функциональные назначения программного обеспечения
3 РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ
4 ЭКОНОМИЧЕСКАЯ ЧАСТЬ
4.1 Правовые аспекты использования программного обеспечения
4.2 Расчет себестоимости разработанного программного продукта
4.2.1 Общие сведения
4.2.2 Расчет себестоимости программного продукта
5 ОХРАНА ТРУДА
5.1 Охрана жизнедеятельности на производстве
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ А Техническое задание
ПРИЛОЖЕНИЕ Б Описание программы
ПРИЛОЖЕНИЕ В Программа и методика испытания
ПРИЛОЖЕНИЕ Г Руководство оператора
ПРИЛОЖЕНИЕ Г Руководство программиста
ПРИЛОЖЕНИЕ Д Содержание электронного носителя
ПРИЛОЖЕНИЕ Л Листинг программных модулей
ПРИЛОЖЕНИЕ Ж
Листинг программы
Листинг 1 – Модуль frFilePanelU.pas
{ Модуль frFilePanelU.pas } { гр. П-1 }
{ Разработчик: Герасимчук, А.В.} { Модифицирован: 10 июня 2011 }
{ )
{ Содержит все функции
программы }
unit frFilePanelU;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, ExtCtrls, FileCtrl, ShellAPI,
FilesU, Buttons;
Type
TColumnsSize=Array [0..4] Of Integer;
TDeactivateProcedure=Procedure Of Object;
TfrFilePanel = class(TFrame)
pnDrives: TPanel;
pnDriveInfo: TPanel;
lbCurrentPath: TLabel;
lvFiles: TListView;
pnFilesInfo: TPanel;
dcbxDrive: TDriveComboBox;
btDirRoot: TButton;
btDirUp: TButton;
lbDriveInfo: TLabel;
bbRefresh: TBitBtn;
procedure lvFilesColumnClick(Sender: TObject; Column: TListColumn);
procedure dcbxDriveChange(Sender: TObject);
procedure lvFilesKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure lvFilesDblClick(Sender: TObject);
procedure btDirUpClick(Sender: TObject);
procedure btDirRootClick(Sender: TObject);
procedure lvFilesColumnRightClick(
Point: TPoint);
procedure lvFilesEditing(Sender: TObject; Item: TListItem;
var AllowEdit: Boolean);
procedure lvFilesInfoTip(Sender: TObject; Item: TListItem;
var InfoTip: String);
procedure lvFilesChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure lvFilesEnter(Sender: TObject);
procedure lvFilesExit(Sender: TObject);
procedure lbCurrentPathClick(Sender: TObjec);
procedure bbRefreshClick(Sender: TObject);
private
{ Private declarations }
AllFiles:TFiles;
SecondEdit:Boolean;
Inited:Boolean;
LastCaption, LastExt:String;
public
{ Public declarations }
flbxFiles:TFileListBox;
CurrentFullPath:String;
CurrentDrive:Char;
CurrentPath:String;
NowRoot:Boolean;
SortColumn:Byte;
SortAscending:Boolean;
NowActive:Boolean;
UseCopyToDir:String;
OtherPanelDeactivate:
lbPathEx, lbItemEx:TLabel;
Procedure Init(FilesListBox:
Procedure Done;
Procedure MakeOutLabels;
Procedure Activate;
Procedure Deactivate;
Procedure CheckActive;
Procedure Refresh;
Procedure Sort;
Procedure SetPath(Path:String);
Procedure ShowItem(Item:TFileRecord);
Procedure ShowFiles;
Procedure GetItemByList(ListItem:
Procedure ShowInfo;
Function ChangeCheck(ListItem:
Procedure SetColumnsSize(ColumnsSize:
Procedure GetColumnsSize(Var ColumnsSize:TColumnsSize);
Procedure SelectLastItem;
Function TryRename(ListItem:TListItem; NewName:String):Boolean;
Procedure TryMoveFile;
Procedure EditFile;
Procedure CreateFolder;
Procedure SetDrive(Drive:Char);
Procedure CheckCurrentPath;
function NameDir:string;
procedure CopyDir(const FromFolder: string; const ToFolder: string);
function FullRemoveDir(Dir: string; DeleteAllFilesAndFolders, StopIfNotAllDeleted, RemoveRoot: boolean): Boolean;
end;
implementation
Uses
StrConsts, FilesExU, fmErrorDriveU, fmNameQueryU, fmAnyMessageU;
{$R *.DFM}
// Построение
Procedure TfrFilePanel.Init(
Begin
AllFiles.Init;
flbxFiles:=FilesListBox;
lvFiles.LargeImages:=
lvFiles.SmallImages:=
lvFiles.StateImages:=
SortColumn:=1;
SortAscending:=True;
SecondEdit:=False;
Inited:=True;
LastCaption:='';
LastExt:='';
OtherPanelDeactivate:=
lbPathEx:=lbPath;
lbItemEx:=lbItem;
Activate;
SetDrive('C');
End;
// Закрытие
Procedure TfrFilePanel.Done;
Begin
Deactivate;
AllFiles.Done;
End;
Procedure TfrFilePanel.MakeOutLabels;
Var
Item:TFileRecord;
Begin
If lbPathEx<>nil Then
Begin
lbPathEx.Caption:=
lbPathEx.Hint:=
End;
If lbItemEx<>nil Then
Begin
GetItemByList(lvFiles.
lbItemEx.Caption:=GetFullName(
End;
End;
// Если панель активная
Procedure TfrFilePanel.Activate;
Begin
If @OtherPanelDeactivate<>nil Then OtherPanelDeactivate;
NowActive:=True;
UseCopyToDir:=ConstCopyToDir;
lbCurrentPath.Color:=
lvFiles.SetFocus;
MakeOutLabels;
End;
// Если панель неактивная
Procedure TfrFilePanel.Deactivate;
Begin
NowActive:=False;
ConstCopyToDir:=
lbCurrentPath.Color:=
End;
// Обновление панели
Procedure TfrFilePanel.Refresh;
Var
i:Integer;
Item:TFileRecord;
Begin
CheckCurrentPath;
AllFiles.Clear;
flbxFiles.Directory:=
flbxFiles.Update;
flbxFiles.FileType:=[
If flbxFiles.Items.Count<=0 Then Exit;
CurrentFullPath:=
CurrentDrive:=
NowRoot:=IsRoot(
For i:=0 To flbxFiles.Items.Count-1 Do
Begin
GetItemByFileName(flbxFiles.
If IsDirectory(Item) Then
Begin
If ((Item.Name<>'.') And (Item.Name<>'..') And (Item.Name<>'')) Then
AllFiles.Add(Item);
End
Else Begin
AllFiles.Add(Item);
End;
End;
Sort;
ShowFiles;
SelectLastItem;
ShowInfo;
{$I-}
If IOResult<>0 Then MessageBeep(48);
{$I+}
End;
// Сортировка файлов
Procedure TfrFilePanel.Sort;
Var
i:Integer;
ColCapt:String;
Begin
For i:=0 To lvFiles.Columns.Count-1 Do
Begin
ColCapt:=lvFiles.Column[i].
Delete(ColCapt, Length(ColCapt), 1);
lvFiles.Column[i].Caption:=
End;
ColCapt:=lvFiles.Column[
Delete(ColCapt, Length(ColCapt), 1);
If SortAscending Then
lvFiles.Column[SortColumn].
Else
lvFiles.Column[SortColumn].
Case SortColumn Of
0: AllFiles.SortByName(
1: AllFiles.SortByExt(
2: AllFiles.SortBySize(
3: AllFiles.SortByDateTime(
4: AllFiles.SortByAttr(
Else
AllFiles.SortByName(
End;
End;
// Действие при
нажатии на колонку (
procedure TfrFilePanel.
Column: TListColumn);
begin
If lvFiles.ItemFocused<>nil Then
Begin
LastCaption:=lvFiles.
LastExt:=lvFiles.ItemFocused.
End
Else Begin
LastCaption:='';
LastExt:='';
End;
If Column.Index=SortColumn Then
SortAscending:=Not(
Else
SortAscending:=True;
SortColumn:=Column.Index;
Sort;
ShowFiles;
SelectLastItem;
end;
// Получение пути
Procedure TfrFilePanel.SetPath(Path:
Var
TmpStr:String;
Begin
TmpStr:=
TmpStr:=ExtractFileName(
If TmpStr='..' Then
Begin
LastCaption:=
LastCaption:=
LastExt:='';
End;
CurrentFullPath:=Path;
Refresh;
End;
// Построение списка файлов (их названий и атрибутов)
Procedure TfrFilePanel.ShowItem(Item:
Var
FormattedItem:
ListItem:TListItem;
Begin
GetFormattedItem(Item, FormattedItem);
ListItem:=lvFiles.Items.Add;
With ListItem Do
Begin
ImageIndex:=GetItemImageIndex(
If Item.Checked Then
StateIndex:=0
Else
StateIndex:=-1;
If IsDirectory(Item) Then
Caption:=ConstDirLeftBracket+
Else
Caption:=FormattedItem.Name;
SubItems.Add(FormattedItem.
SubItems.Add(FormattedItem.
SubItems.Add(FormattedItem.
SubItems.Add(FormattedItem.
End;
End;
// Вывод списка файлов на экран
Procedure TfrFilePanel.ShowFiles;
Var
i:Integer;
Item:TFileRecord;
Begin
lvFiles.Items.Clear;
If NowRoot Then
lvFiles.AllocBy:=AllFiles.
Else
lvFiles.AllocBy:=AllFiles.
If Not(NowRoot) Then ShowItem(DirUpItem);
For i:=0 To AllFiles.ItemsCount-1 Do
Begin
AllFiles.GetItem(i, Item);
ShowItem(Item);
End;
End;
Информация о работе Файловый менеджер с поддержкой поиска mp3-файлов по ID3-параметрам