RSS    

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

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

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


Новости


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

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

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.