Разработка файловой оболочки

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

p>

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

.)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 запусти?/p>