Разработка файловой оболочки
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
?ь файл
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
0)or((F.Attr=faDirectory)and((F.Name..))));
faDirectorythen"> 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
// Определить (по заполнению временных списков) что необходимо вставить
// файлы или директории
0then"> if MainForm.TempCopyMove.Items.Count<>0 then
begin
ProgressForm.Show;
PasteFileFromTemp;
ProgressForm.Close;
end;
0then"> 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
0)then"> 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
FlagCopy