RSS    

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

 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;

 If MainForm.CMDIrList.Items.Count<>0 then

 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;

end;

procedure TMainForm.SDelClick(Sender: TObject);

//на панели нажата кнопка УДАЛИТЬ

begin

 if (MainForm.FileList.Focused) and (MainForm.FileList.SelCount>0) then

 begin

 AskDeleteForm.ShowModal;

 end;

 if MainForm.Directory.Focused then

 begin

 IndexDeleteDirectory:=MainForm.Directory.SelectedItem;

 MainForm.CMDirList.Clear;

 MainForm.CMFileList.Clear;

 DeleteEmptyDirectory(MainForm.Directory.Directory);

 MainForm.Directory.Invalidate;

 end;

end;

procedure TMainForm.SCopyClick(Sender: TObject);

//На панели нажата кнопка КОПИРОВАТЬ

begin

 If MainForm.Directory.Focused then

 begin

 SourseDir:=MainForm.Directory.Directory;

 DoingWithDir:=True;

 CopyMoveDirectory;

 end;

 If MainForm.FileList.Focused then

 begin

 FlagCopyFile:=True;

 FlagMoveFile:=False;

 CopyPathFileInTemp;

 end;

end;

procedure TMainForm.FileListClick(Sender: TObject);

begin

 MainForm.SDel.Enabled:=True;

 MainForm.SCopy.Enabled:=True;

 MainForm.SCut.Enabled:=True;

end;

procedure TMainForm.CutDirClick(Sender: TObject);

// Вырезание Директории

begin

 SourseDir:=MainForm.Directory.Directory;

 DoingWithDir:=False;

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

 GreateCopyMoveDirList(MainForm.Directory.Directory);

end;

procedure TMainForm.Cut1Click(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.Copy1Click(Sender: TObject);

// Копирование в зависимости от контекста

begin

 If MainForm.Directory.Focused then

 begin

 SourseDir:=MainForm.Directory.Directory;

 DoingWithDir:=True;

 CopyMoveDirectory;

 end;

 If MainForm.FileList.Focused then

 begin

 FlagCopyFile:=True;

 FlagMoveFile:=False;

 CopyPathFileInTemp;

 end;

end;

procedure TMainForm.Paste1Click(Sender: TObject);

// Вставка в зависимости от контекста

begin

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

 begin

 ProgressForm.Show;

 PasteFileFromTemp;

 ProgressForm.Close;

 end;

 If MainForm.CMDIrList.Items.Count<>0 then

 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;

end;

procedure TMainForm.Delete1Click(Sender: TObject);

//Удаление в зависимости от контекста

begin

 if (MainForm.FileList.Focused) and (MainForm.FileList.SelCount>0) then

 begin

 AskDeleteForm.Show;

 end;

 if MainForm.Directory.Focused then

 begin

 IndexDeleteDirectory:=MainForm.Directory.SelectedItem;

 MainForm.CMDirList.Clear;

 MainForm.CMFileList.Clear;

 DeleteEmptyDirectory(MainForm.Directory.Directory);

 MainForm.Directory.Invalidate;

 end;

end;

procedure TMainForm.RenameClick(Sender: TObject);

// Переименование в зависимости от контекста

begin

 If MainForm.Directory.Focused then

 begin

 GetFormToCenter(RenameDirForm);

 RenameDirForm.ShowModal;

 end;

 if MainForm.FileList.Focused then

 begin

 RenameFileForm.ShowModal;

 end;

end;

procedure TMainForm.FormResize(Sender: TObject);

// Наложение ограничений на минимальные размеры главной формы

begin

 if MainForm.Width<391 then

 MainForm.Width:=391;

 if MainForm.Height<260 then

 MainForm.Height:=260;

end;

procedure MainForm.InvertSelectClick(Sender: TObject);

begin

 ReselectAllFile;

end;

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

 Shift: TShiftState);

// Клавиша отпущена при работе с СФ

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';

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


Новости


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

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

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.