Курсовая работа: Файловый менеджер
Compare=StrToInt(s1)>StrToInt(s2)?1:-1;
break;
case 3:
TDateTime dt1=StrToDateTime(Item1->SubItems->Strings[2]);
TDateTime dt2=StrToDateTime(Item2->SubItems->Strings[2]);
if(temp1==temp2)
Compare=dt1>dt2?1:-1;
else
Compare=temp2?1:-1;
break;
}
Compare*=Direct;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListView1DblClick(TObject *Sender)
{ //Двойной клик на ListView
OpenFileOrFolder();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListView1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(DragnDrop && Button == mbLeft) //Событие по нажатию мыши и начало перемещения
{
if(Shift.Contains(ssCtrl))
type_file_operation_drag_drop=FO_COPY;
else
type_file_operation_drag_drop=FO_MOVE;
ListView1->BeginDrag(false,5);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
//Даем возможность положить объект если есть куда класть и объект из list и tree
//---------------------------------------------------------------------------
void __fastcall TForm1::ListView1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
Accept=true;
//---------------------------------------------------------------------------
void strcat0(char * &dest,char *source)
{ //Объединение двуч строк с оставлением между ними
for(;(*dest)!='\0';dest++); //нулевого символа
for(dest++;(*source!='\0');dest++,source++)
*dest=*source;
*dest='\0';
}
void finstr(char *dest)
{
for(;(*dest)!='\0';dest++);
dest++;
*dest='\0';
}
unsigned int lengthfinstr(char *dest)
{
unsigned int l=0;
do
{
for(;(*dest)!='\0';dest++,l++);
dest++;
l++;
}
while((*dest)!='\0');
return l+1;
}
void __fastcall TForm1::ListView1DragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
int operation=type_file_operation_drag_drop;
if(ListView1->GetItemAt(X,Y)==NULL)
{ //Если перенос делается на пустое место
ListView1->Selected->Position=Point(X,Y); //просто меняем место значка и выходим
return;
}
if(Source->ClassNameIs("TListView")) //Если объект перетащен из listview
{ //извлекаем нужные папки и делаем операцию
char *frombuf, tobuf[MAX_PATH+1]={'\0'};
TListView *sender=(TListView *)Sender;
PrepareBufForOperationInListView(frombuf);
AnsiString senderstr=*((AnsiString *)(sender->GetItemAt(X,Y)->Data));//+ExtractFileName(*((AnsiString *)(source->Selected->Data)));
strcpy(tobuf,senderstr.c_str()); //Вызываем функции и указываем операцию
FileAndFolderOperation(frombuf,tobuf,operation);
}
if(Source->ClassNameIs("TTreeView"))
{
char frombuf[MAX_PATH+1]={'\0'}, tobuf[MAX_PATH+1]={'\0'};
TTreeView *source=(TTreeView *)Source;
TListView *sender=(TListView *)Sender;
AnsiString sourcestr=*((AnsiString *)(source->Selected->Data));
AnsiString senderstr=*((AnsiString *)(sender->GetItemAt(X,Y)->Data));//+ExtractFileName(*((AnsiString *)(source->Selected->Data)));
sourcestr.SetLength(sourcestr.Length()-1);
strcpy(frombuf,sourcestr.c_str());
strcpy(tobuf,senderstr.c_str());
FileAndFolderOperation(frombuf,tobuf,operation);
}
UpdateAll(false); //Обновление
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1DragDrop(TObject *Sender, TObject *Source,
int X, int Y) //Окончание перетаскивания
{
int operation=type_file_operation_drag_drop;
if(Source->ClassNameIs("TListView")) //Если объект перетащен из listview
{ //извлекаем нужные папки и делаем операцию
char *frombuf, tobuf[MAX_PATH+1]={'\0'};
TTreeView *sender=(TTreeView *)Sender;
PrepareBufForOperationInListView(frombuf);
AnsiString senderstr=*((AnsiString *)(sender->GetNodeAt(X,Y)->Data));//+ExtractFileName(*((AnsiString *)(source->Selected->Data)));
strcpy(tobuf,senderstr.c_str()); //Вызываем функции и указываем операцию
FileAndFolderOperation(frombuf,tobuf,operation);
}
if(Source->ClassNameIs("TTreeView"))
{
TTreeView *source=(TTreeView *)Source;
TTreeView *sender=(TTreeView *)Sender;
char frombuf[MAX_PATH+1]={'\0'}, tobuf[MAX_PATH]={'\0'};
AnsiString sourcestr=*((AnsiString *)(source->Selected->Data));
AnsiString senderstr=*((AnsiString *)(sender->GetNodeAt(X,Y)->Data));//+ExtractFileName(*((AnsiString *)(source->Selected->Data)));
sourcestr.SetLength(sourcestr.Length()-1);
strcpy(frombuf,sourcestr.c_str());
strcpy(tobuf,senderstr.c_str());
FileAndFolderOperation(frombuf,tobuf,operation);
}
UpdateAll(false); //Обновление
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(DragnDrop && Button == mbLeft) //начало перетаскивания по нажатию на treeview
{
if(Shift.Contains(ssCtrl))
type_file_operation_drag_drop=FO_COPY;
else
type_file_operation_drag_drop=FO_MOVE;
TreeView1->BeginDrag(false,5);
}
}
void __fastcall TForm1::TreeView1Edited(TObject *Sender, TTreeNode *Node,
AnsiString &S)
{
S=RenameFileOrFolder(S);
UpdateTreeView(false);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListView1Edited(TObject *Sender, TListItem *Item,
AnsiString &S)
{
S=RenameFileOrFolder(S);
UpdateTreeView(false);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NRenameClick(TObject *Sender)
{
if(ListView1->ItemFocused==NULL)
{
if(TreeView1->Selected!=NULL)
if(TreeView1->Selected->Level>1)
TreeView1->Selected->EditText();
}
else
if((ListView1->Selected)!=NULL)
ListView1->Selected->EditCaption();
}
void __fastcall TForm1::TreeView1ContextPopup(TObject *Sender,
TPoint &MousePos, bool &Handled)
{
TTreeNode *node;
if((node=TreeView1->GetNodeAt(MousePos.x,MousePos.y))!=NULL)
{
ListView1->ItemFocused=NULL;
TreeView1->Selected=node;
if(TreeView1->Selected->Level>0)
ViewFailAndFolderInListView(*((AnsiString *)(TreeView1->Selected->Data)));
node->Focused=true;
}
else
TreeView1->Selected=NULL;
if(TreeView1->Selected!=NULL && TreeView1->Selected->Level>0)
Handled=false;
else
Handled=true;
PNOpen->Visible=false;
PNView->Visible=false;
PNSort->Visible=false;
PNUpdate->Visible=false;
PNProperty->Visible=true;
if(TreeView1->Selected->Level>1)
{
PNCut->Visible=true;
PNCopy->Visible=true;
PNDelete->Visible=true;
PNRename->Visible=true;
}
else
{
PNCut->Visible=false;
PNCopy->Visible=false;
PNDelete->Visible=false;
PNRename->Visible=false;
}
OpenClipboard(NULL); //Проверка возможности вставки
if(IsClipboardFormatAvailable(CF_HDROP))
PNPaste->Enabled=true;
else
PNPaste->Enabled=false;
CloseClipboard();
}
//-----------------------------------------------------------
1.3. Листинг PropertyFile.cpp
TFPropertyFile *FPropertyFile;
//---------------------------------------------------------------------------
__fastcall TFPropertyFile::TFPropertyFile(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void TFPropertyFile::Set_Change(AnsiString Name,WIN32_FILE_ATTRIBUTE_DATA &attr)
{
if (ENameFile->Modified) //Сохранение изменений
{ //Если изменнео имя файла папки
if((FileGetAttr(Name) & faDirectory)!=0)
Name.SetLength(Name.Length()-1);
char frombuf[1000]={'\0'}, tobuf[1000]={'\0'};
strcpy(frombuf,Name.c_str());
strcpy(tobuf,(ExtractFilePath(Name)+ENameFile->Text).c_str());
Form1->FileAndFolderOperation(frombuf,tobuf,FO_RENAME); //Переименовываем
}
//Сохранение атрибутов
if(CBArchiv->Checked) attr.dwFileAttributes |= FILE_ATTRIBUTE_ARCHIVE;
else attr.dwFileAttributes &= ~FILE_ATTRIBUTE_ARCHIVE;
if(CBReadOnly->Checked) attr.dwFileAttributes |= FILE_ATTRIBUTE_READONLY;
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9