скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Разработка файловой оболочки

 Begin

 // запись информации о программе в файл МС.INI

 SaveIniMainForm;

 Close;

 end

 end

 else

 begin

 SaveIniMainForm;

 Close;

 end;

end;

procedure TMainForm.FormCreate(Sender: TObject);

//Установка начльных параметров для компонент главной формы

begin

 SetUpMainForm;

 SetUpComponents;

end;

procedure TMainForm.Options1Click(Sender: TObject);

//Вывод формы параметров

begin

 // Центрирование выводимой формы относительно главной формы

 GetFormToCenter(OptionsForm);

 OptionsForm.ShowModal;

end;

procedure TMainForm.DrivesSectionClick(HeaderControl: THeaderControl;

 Section: THeaderSection);

// Смена текущего диска

begin

 Directory.Drive:=Section.Text[1];

 Directory.SetDirectory(Section.Text[1]+':\');

 MainForm.Directory.BuildTree;

end;

procedure TMainForm.DrivesMouseUp(Sender: TObject; Button: TMouseButton;

 Shift: TShiftState; X, Y: Integer);

begin

 //перерисовка списка директорий при необходимости

 Directory.Repaint;

end;

procedure TMainForm.NewDirClick(Sender: TObject);

// Создание директории и вывод соответствующей формы

begin

 CreateDirForm.Show;

end;

Function CountDir(Str:String):String;

// Определение количества поддиректорий в текущей директории

 Var F:TSearchRec;

 C:integer;

 begin

 c:=0;

 findfirst(Str+'\*.*',faAnyFile,F);

 findnext(F);

 repeat

 if (f.Attr>=16) and (f.attr<32) and (f.Name<>'.') and (f.Name<>'..') then

 c:=c+1;

 Until(findnext(f)<>0);

 CountDir:=IntToStr(c);

 end;

procedure TMainForm.DirectoryChange(Sender: TObject);

//Смена текущей директории

begin

//Обновление списка файлов

 FileList.SetDirectory(Directory.Directory);

//Заполнение статус-строки

 MainForm.StatusBar.Panels[0].Text:=CountDir(Directory.Directory)+' dir. & '+IntToStr(MainForm.FileList.Items.Count)+

 ' files ';

 MainForm.StatusBar.Panels[1].Text:='';

//Определение активных кнопок панели управления

 If UpperCase(MainForm.Directory.Directory)=UpperCase(MainForm.DrBox.Drive+':\') then

 begin

 Up.Enabled:=False;

 SCut.Enabled:=False;

 SCopy.Enabled:=False;

 SDel.Enabled:=False;

 end

 else

 begin

 Up.Enabled:=True;

 SCut.Enabled:=True;

 SCopy.Enabled:=True;

 SDel.Enabled:=True;

 end;

end;

procedure TMainForm.CopyClick(Sender: TObject);

// Копирование файлов

begin

 FlagCopyFile:=True;

 FlagMoveFile:=False;

 CopyPathFileInTemp;

end;

procedure TMainForm.CutClick(Sender: TObject);

// Вырезание файлов

begin

 FlagMoveFile:=True;

 CopyPathFileInTemp;

end;

procedure TMainForm.PasteClick(Sender: TObject);

begin

 ProgressForm.Show;

 PasteFileFromTemp;

 ProgressForm.Close;

 MainForm.TempCopyMove.Clear;

end;

procedure TMainForm.Rename1Click(Sender: TObject);

// Переименование файлов в соответствующей экранной форме

begin

 GetFormToCenter(RenameFileForm);

 RenameFileForm.ShowModal;

end;

procedure TMainForm.DeleteDirClick(Sender: TObject);

// Удаление директории

begin

 // Обнуление временных списков

 MainForm.CMDirList.Clear;

 MainForm.CMFileList.Clear;

 DeleteEmptyDirectory(MainForm.Directory.Directory);

 //Обновление списка директорий

 MainForm.Directory.Invalidate;

end;

procedure TMainForm.DeleteClick(Sender: TObject);

//Удаление файлов

begin

 AskDeleteForm.Show;

end;

procedure TMainForm.FileMenuPopup(Sender: TObject);

//Определение видимых строк в контектсном меню файловой области

//в момент его вызова

begin

 if MainForm.FileList.SelCount=0 then

 begin

 with MainForm.FileMenu do

 begin

 Delete.Enabled:=False;

 Cut.Enabled:=False;

 Copy.Enabled:=False;

 Rename1.Enabled:=False;

 end;

 end

 else

 begin

 with MainForm.FileMenu do

 begin

 Delete.Enabled:=True;

 Cut.Enabled:=True;

 Copy.Enabled:=True;

 Rename1.Enabled:=True;

 end;

 end;

 if MainForm.TempCopyMove.Items.Count = 0 then

 Paste.Enabled:=False

 else

 Paste.Enabled:=True;

end;

procedure TMainForm.FileMask1Click(Sender: TObject);

// Запрос маски файлов для списка файлов (в дальнейшем СФ)

begin

 GetFileMask.Show;

end;

procedure TMainForm.FileListDblClick(Sender: TObject);

// Запуск программ/редактирование(просмотр) во внешнем редакторе

// при двойном щелчке мышкой

Var

 str:string;

begin

 Str:=FileList.FileName;

 ExecuteFile(Str,'','',SW_SHOW);

end;

procedure TMainForm.SplitterMoved(Sender: TObject);

//Перемещение разделителя СФ и Списка директорий (В Дальнейшем СД)

begin

 // Ограничение на положение разделителя

 // Ширина СД не должна быть меньше Списка дисков (В дальнейшем СПД)

 if Splitter.Left<=DrBox.Width then

 begin

 Directory.Width:=DrBox.Width+6;

 end;

 // Сохранение положения разделителя для следующего запуска программы

 McIni.WriteInteger('ASWindow','Splitter',MainForm.Directory.Width);

 // Установка размеров панелей статус-строки

 MainForm.StatusBar.Panels[0].Width:=MainForm.Directory.Width;

end;

procedure TMainForm.Find1Click(Sender: TObject);

// Поиск файлов

begin

 FindForm.Show

end;

procedure TMainForm.Info1Click(Sender: TObject);

// Вывод информации о текущем диске и директории

begin

 GetFormToCenter(InfoForm);

 InfoForm.ShowModal;

end;

procedure TMainForm.CopyDirClick(Sender: TObject);

//Копирование директорий (Выбран пункт меню копировать)

begin

 SourseDir:=MainForm.Directory.Directory;

 DoingWithDir:=True;

 CopyMoveDirectory;

end;

procedure TMainForm.RenameDirClick(Sender: TObject);

//Переименование директории в соответствующей форме

begin

 GetFormToCenter(RenameDirForm);

 RenameDirForm.ShowModal;

end;

procedure TMainForm.FileAttrClick(Sender: TObject);

//Получение установка атрибутов файла в соотв. форме

begin

 GetFormToCenter(AttrFileForm);

 AttrFileForm.ShowModal;

end;

procedure TMainForm.ViewClick(Sender: TObject);

// Определение видимых компонент в меню VIEW

// в момент его открытия

begin

 if MainForm.FileList.SelCount = 0 then

 begin

 MainForm.FileAttr.Enabled:=False;

 end

 else

 begin

 MainForm.FileAttr.Enabled:=True;

 end;

 if UpperCase(MainForm.Directory.Directory)=UpperCase(MainForm.DrBox.Drive+':\') then

 MainForm.SizeDirectory1.Enabled:=False

 else

 MainForm.SizeDirectory1.Enabled:=True;

end;

Procedure DDD(DirS:string);

// Определение размера текущей директории

 Var

 d:TSearchRec;

 begin

 FindFirst(DirS+'\'+'*.*',faAnyFile,D);

 FindNext(D);

 repeat

 if (D.Name<>'.') and (D.Name<>'..') then

 begin

 if (D.Attr=faDirectory) Or (D.Attr=18) then

 begin

 DDD(DirS+'\'+D.Name);

 end

 else

 begin

 Size:=Size+D.Size;

 end;

 end;

 Until(FindNext(D) <> 0);

 FindClose(D);

 end;

procedure TMainForm.SizeDirectory1Click(Sender: TObject);

// Вывод информации о текущей директории в статус-строке

begin

 Size:=0;

 MainForm.StatusBar.Panels[0].Text:='Wait...';

 DDD(MainForm.Directory.Directory);

 MainForm.StatusBar.Panels[0].Text:=FormatSize(IntToStr(Size)); // перевод числа в читабельный формат

 MainForm.StatusBar.Panels[0].Text:=MainForm.StatusBar.Panels[0].Text+' b';

end;

procedure TMainForm.FileListMouseUp(Sender: TObject; Button: TMouseButton;

 Shift: TShiftState; X, Y: Integer);

// Левая кнопка мышки отпущена

Var

 i:integer;

 F:TSearchRec;

 str:string;

begin

 str:=' ';

 Size:=0;

 //Если при помощи мышки выделена группа файлов определить их суммарный размер

 for i:=0 to MainForm.FileList.Items.Count-1 do

 begin

 if MainForm.FileList.Selected[i] then

 begin

 FindFirst(MainForm.FileList.Items[i],faAnyFile,F);

 Size:=Size+F.Size;

 if MainForm.FileList.SelCount=1 then break;

 end;

 end;

 // Если один выделенный файл, вывести информацию о нем в строке статуса

 if MainForm.FileList.SelCount=1 then

 begin

 MainForm.StatusBar.Panels[1].Text:=ExtractFileName(F.Name)+' '+

 FormatSize(IntToStr(F.Size))+' b'+' '+

 DateToStr(FileDateTime(F.Name))+' '+TimeToStr(FileDateTime(F.Name));

 end

 else

 begin

 MainForm.StatusBar.Panels[1].Text:=FormatSize(intToStr(Size))+' b'+

 ' in '+IntToStr(MainForm.FileList.SelCount)+ ' selected files';

 end;

end;

Procedure ReselectAllFile;

// Инвертирование выделения файлов

 Var i:integer;

 begin

 For i:=0 to MainForm.FileList.Items.Count-1 do

 MainForm.FileList.Selected[i]:=not MainForm.FileList.Selected[i];

 end;

Procedure SelectAllF(Key:Char);

// Выделить все файлы в СФ

Var

 i:integer;

 F:TsearchRec;

 Str:string;

begin

 if Key='*' then

 begin

 if MainForm.FileList.SelCount=MainForm.FileList.Items.Count then

 ReselectAllFile

 else

 begin

 for i:=0 to MainForm.FileList.Items.Count-1 do

 MainForm.FileList.Selected[i]:=True;

 str:=' ';

 Size:=0;

// Обновление Статус-строки

 for i:=0 to MainForm.FileList.Items.Count-1 do

 begin

 if MainForm.FileList.Selected[i] then

 begin

 FindFirst(MainForm.FileList.Items[i],faAnyFile,F);

 Size:=Size+F.Size;

 if MainForm.FileList.SelCount=1 then break;

 end;

 end;

 if MainForm.FileList.SelCount=1 then

 begin

 MainForm.StatusBar.Panels[1].Text:=ExtractFileName(F.Name)+' '+

 FormatSize(IntToStr(F.Size))+' b'+' '+

 DateToStr(FileDateTime(F.Name))+' '+TimeToStr(FileDateTime(F.Name));

 end

 else

 begin

 MainForm.StatusBar.Panels[1].Text:=FormatSize(intToStr(Size))+' b'+

 ' in '+IntToStr(MainForm.FileList.SelCount)+ ' selected files';

 end;

 end;

 end;

end;

procedure TMainForm.FileListKeyPress(Sender: TObject; var Key: Char);

begin

 SelectAllF(Key);

end;

procedure TMainForm.FileListKeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

//Нажата клавиша на клавиатуре

Var

 i:integer;

 F:TSearchRec;

 str:string;

begin

 // если нажат ENTER запустить файл

 if (Key=13) and not AskDeleteForm.Active then ExecuteFile(FileList.FileName,'','',SW_SHOW);

 str:=' ';

 Size:=0;

 for i:=0 to MainForm.FileList.Items.Count-1 do

 begin

 if MainForm.FileList.Selected[i] then

 begin

 FindFirst(MainForm.FileList.Items[i],faAnyFile,F);

 Size:=Size+F.Size;

 if MainForm.FileList.SelCount=1 then break;

 end;

 end;

// Обновление статус строки

 if MainForm.FileList.SelCount=1 then

 begin

 MainForm.StatusBar.Panels[1].Text:=ExtractFileName(F.Name)+' '+

 FormatSize(IntToStr(F.Size))+' b'+' '+

 DateToStr(FileDateTime(F.Name))+' '+TimeToStr(FileDateTime(F.Name));

 end

 else

 begin

 MainForm.StatusBar.Panels[1].Text:=FormatSize(intToStr(Size))+' b'+

 ' in '+IntToStr(MainForm.FileList.SelCount)+ ' selected files';

 end;

end;

procedure TMainForm.PasteDirClick(Sender: TObject);

//Вставка директории

begin

 DestinationDir:=MainForm.Directory.Directory;

 PasteDirectory(SourseDir,MainForm.Directory.Directory);

 MainForm.Directory.BuildTree;

 //Если директория переноситься то удалить источник

 If not DoingWithDir then

 begin

 DelNotEmptyDirectory(SourseDir);

 MainForm.Directory.BuildTree;

 end;

 MainForm.CMDirList.Clear;

end;

procedure TMainForm.DirectoryMenuPopup(Sender: TObject);

// Определение видимых компонент контектсного меню СД

begin

 if MainForm.CMDirList.Items.Count=0 then

 PasteDir.Enabled:=False

 else

 PasteDir.Enabled:=True;

 If Length(MainForm.Directory.Directory) <= 3 then

 begin

 CopyDir.Enabled:=False;

 CutDir.Enabled:=False;

 DeleteDir.Enabled:=False;

 RenameDir.Enabled:=False;

 end

 else

 begin

 CutDir.Enabled:=True;

 CopyDir.Enabled:=True;

 DeleteDir.Enabled:=True;

 RenameDir.Enabled:=True;

 end;

end;

procedure TMainForm.File1Click(Sender: TObject);

//Определение является ли выделенный файл приложением и подсвечивание / скрытие

//пункта меню RUN в момент открытия меню FILE

begin

 if (UpperCase(ExtractFileExt(MainForm.FileList.FileName))='.EXE') or

 (UpperCase(ExtractFileExt(MainForm.FileList.FileName))='.COM') then

 Open.Enabled:=True

 else Open.Enabled:=False;

end;

procedure TMainForm.OpenClick(Sender: TObject);

//Запуск приложения со строкой параметров

begin

 GetFormToCenter(RunForm);

 RunForm.ShowModal;

end;

procedure TMainForm.DrBoxChange(Sender: TObject);

//Смена текущего диска и обносление СФ и СД

Var F:TSearchRec;

 s:string;

begin

 MainForm.Directory.Drive:=MainForm.DrBox.Drive;

 MainForm.FileList.Directory:=MainForm.DrBox.Drive+':\';

 S:=MainForm.FileList.Mask;

 MainForm.FileList.Mask:='>.>';

 FindFirst(MainForm.DrBox.Drive+':\*.*',faDirectory,F);

 Repeat

 Until ((FindNext(F)<>0) or ((F.Attr=faDirectory) and ((F.Name<>'.') or (F.Name<>'..'))));

 if F.Attr<>faDirectory then

 MainForm.Directory.SetDirectory(MainForm.DrBox.Drive+':\')

 else

 MainForm.Directory.SetDirectory(MainForm.DrBox.Drive+':\'+F.Name);

 MainForm.Directory.BuildTree;

 MainForm.Directory.SetDirectory(MainForm.DrBox.Drive+':\');

 MainForm.FileList.Enabled:=True;

 MainForm.FileList.Mask:=s;

 MainForm.StatusBar.Panels[0].Text:=IntToStr(MainForm.FileList.Items.Count)+

 ' files ';

end;

procedure TMainForm.UpClick(Sender: TObject);

//Перход на один уровень вверх в списке директорий

Var

 i:integer;

 Str:string;

begin

 str:=MainForm.Directory.Directory;

 for i:=Length(Str) downto 0 do

 if Str[i]='\' then

 begin

 str[i+1]:=#0;

 break;

 end;

 MainForm.Directory.Directory:=str;

 MainForm.Directory.BuildTree;

end;

procedure TMainForm.SCutClick(Sender: TObject);

// Нажата кнопка ВЫРЕЗАТЬ на панели инструментов

begin

 //Если активен СФ то выреззать файлы

 if MainForm.FileList.Focused then

 begin

 FlagMoveFile:=True;

 CopyPathFileInTemp;

 end;

 //Если активен СД то вырезать директорию

 If MainForm.Directory.Focused then

 begin

 SourseDir:=MainForm.Directory.Directory;

 DoingWithDir:=False;

 MainForm.CMDirList.Items.Add(MainForm.Directory.Directory);

 GreateCopyMoveDirList(MainForm.Directory.Directory);

 end;

end;

procedure TMainForm.SPasteClick(Sender: TObject);

//На панели инструментов нажата кнопка ВСТАВИТЬ

begin

 // Определить (по заполнению временных списков) что необходимо вставить

 // файлы или директории

 if MainForm.TempCopyMove.Items.Count<>0 then

 begin

 ProgressForm.Show;

 PasteFileFromTemp;

 ProgressForm.Close;

 end;

Страницы: 1, 2, 3, 4, 5


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.