📄 unit1.cpp
字号:
MessageDlg(FileName+ "是一个目录,软件尚未提供目录下载功能",
mtInformation, TMsgDlgButtons() << mbOK, 0);
}
else //文件
{
AnsiString NewName;
if(InputQuery("输入文件名","下载后的文件名:",NewName))
{
FileName=ListViewRemote->Selected->Caption;
NMFTP1->Download(FileName,CurrentDir+"\\"+FileName);
RefreshViewLocal();
}
}
}
//------------删除菜单--------------------------------------------------------
void __fastcall TForm1::N10Click(TObject *Sender)
{
//需要有选中文件,且不是上级目录
AnsiString FileName;
FileName=ListViewRemote->Selected->Caption;
if(ListViewRemote->Selected->ImageIndex==1) //目录
{
if(MessageDlg(AnsiString("确认删除目录")+FileName+ "?",
mtConfirmation, TMsgDlgButtons() << mbYes <<mbNo, 0)
==mrYes)
{ //目录必须为空
NMFTP1->RemoveDir(FileName);
}
}
else
{
if(MessageDlg(AnsiString("确认删除文件")+FileName+ "?",
mtConfirmation, TMsgDlgButtons() << mbYes <<mbNo, 0)
==mrYes)
{
NMFTP1->Delete(FileName);
}
}
NMFTP1->List();
}
void __fastcall TForm1::N9Click(TObject *Sender)
{
//在 ViewList 中有列表项被选中,而且不是上级目录那一项时,才能使用
//这个在右键弹出时判断
AnsiString NewName;
if(InputQuery("重命名","填写新的文件名:",NewName))
{
AnsiString OldName;
OldName=ListViewRemote->Selected->Caption;
NMFTP1->Rename(OldName,NewName);
NMFTP1->List();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N8Click(TObject *Sender)
{
AnsiString TheDir;
if(InputQuery("创建目录","填写要创建的目录名:",TheDir))
{
NMFTP1->MakeDirectory(TheDir);
NMFTP1->List();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N12Click(TObject *Sender)
{
NMFTP1->List();
}
//------------选择要执行操作的项---------------------------------------------------------
void __fastcall TForm1::PopupMenuRemotePopup(TObject *Sender)
{
//判断哪些选项可用
N5->Enabled=false;
N8->Enabled=false;
N9->Enabled=false;
N10->Enabled=false;
N12->Enabled=false;
N7->Enabled=false;
N6->Enabled=false;
if(NMFTP1->Connected)
{
if(ListViewRemote->SelCount==1 && ListViewRemote->Selected->ImageIndex!=0)
{
N5->Enabled=true;
N9->Enabled=true;
N10->Enabled=true;
N6->Enabled=true;
}
N7->Enabled=true;
N8->Enabled=true;
N12->Enabled=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PopupMenulocalPopup(TObject *Sender)
{
//判断哪些选项可用
N1->Enabled=false;
N2->Enabled=false;
N3->Enabled=false;
N4->Enabled=false;
N11->Enabled=false;
N13->Enabled=false;
// PopMenuLocalRefresh->Enabled=false;
if(NMFTP1->Connected)
{
if(ListViewLocal->SelCount==1 && ListViewLocal->Selected->ImageIndex!=0)
{
N1->Enabled=true;
N2->Enabled=true;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1Connect(TObject *Sender)
{
Memo1->Lines->Add("成功连接到"+NMFTP1->Host+"端口"+NMFTP1->Port);
Memo1->Lines->Add(AnsiString("用户名:")+NMFTP1->UserID);
Memo1->Lines->Add("密码:"+NMFTP1->Password);
//调用 List 方法获得文件列表,并在 ListViewRemote 中显示
NMFTP1->List();
DriveComboBox2->Text=NMFTP1->CurrentDir;
//置连接按钮不可用,置其它几个按钮可用
Button2->Enabled=false;
Button5->Enabled=true;
Button7->Enabled=true;
DriveComboBox2->Enabled=true;
//清空 Form2 登陆信息窗体中的内容
Form2->Edit1->Text="";
Form2->Edit2->Text="";
Form2->Edit3->Text="";
Form2->Edit4->Text="21";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1ConnectionFailed(TObject *Sender)
{
Memo1->Lines->Add("连接失败,Server:"+NMFTP1->Host+"端口"+NMFTP1->Port);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1Disconnect(TObject *Sender)
{
Memo1->Lines->Add("连接已断开!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1Error(TComponent *Sender, WORD Errno,
AnsiString Errmsg)
{
Memo1->Lines->Add(AnsiString("Error ")+IntToStr(Errno)+": "+Errmsg);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1Failure(bool &Handled, TCmdType Trans_Type)
{
switch (Trans_Type) {
case cmdChangeDir: Memo1->Lines->Add("ChangeDir failure"); break;
case cmdMakeDir: Memo1->Lines->Add("MakeDir failure"); break;
case cmdDelete: Memo1->Lines->Add("Delete failure"); break;
case cmdRemoveDir: Memo1->Lines->Add("RemoveDir failure"); break;
case cmdList: Memo1->Lines->Add("List failure"); break;
case cmdRename: Memo1->Lines->Add("Rename failure"); break;
case cmdUpRestore: Memo1->Lines->Add("UploadRestore failure"); break;
case cmdDownRestore: Memo1->Lines->Add("DownloadRestore failure"); break;
case cmdDownload: Memo1->Lines->Add("Download failure"); break;
case cmdUpload: Memo1->Lines->Add("Upload failure"); break;
case cmdAppend: Memo1->Lines->Add("UploadAppend failure"); break;
case cmdReInit: Memo1->Lines->Add("ReInit failure"); break;
case cmdAllocate: Memo1->Lines->Add("Allocate failure"); break;
case cmdNList: Memo1->Lines->Add("NList failure"); break;
case cmdDoCommand: Memo1->Lines->Add("DoCommand failure"); break;
default: Memo1->Lines->Add("Unrecognized command failed."); break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1HostResolved(TComponent *Sender)
{
Memo1->Lines->Add("Host Resolved");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1InvalidHost(bool &Handled)
{
Memo1->Lines->Add("Invalid Host,Please Choose another host");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1PacketRecvd(TObject *Sender)
{
//因为这个事件每接受一个数据包都会触发,所以做成进度条
ProgressBar1->Position=
float(NMFTP1->BytesRecvd)*100/float(NMFTP1->BytesTotal);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1PacketSent(TObject *Sender)
{
ProgressBar1->Position=
float(NMFTP1->BytesSent)*100/float(NMFTP1->BytesTotal);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1Status(TComponent *Sender, AnsiString Status)
{
Memo1->Lines->Add(Status);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1Success(TCmdType Trans_Type)
{
switch(Trans_Type)
{
case cmdChangeDir: Memo1->Lines->Add("ChangeDir success"); break;
case cmdMakeDir: Memo1->Lines->Add("MakeDir success"); break;
case cmdDelete: Memo1->Lines->Add("Delete success"); break;
case cmdRemoveDir: Memo1->Lines->Add("RemoveDir success"); break;
case cmdList:
Memo1->Lines->Add("List success");
case cmdRename: Memo1->Lines->Add("Rename success"); break;
case cmdUpRestore: Memo1->Lines->Add("UploadRestore success"); break;
case cmdDownRestore: Memo1->Lines->Add("DownloadRestore success"); break;
case cmdDownload: Memo1->Lines->Add("Download success"); break;
case cmdUpload: Memo1->Lines->Add("Upload success"); break;
case cmdAppend: Memo1->Lines->Add("UploadAppend success"); break;
case cmdReInit: Memo1->Lines->Add("ReInit success"); break;
case cmdAllocate: Memo1->Lines->Add("Allocate success"); break;
case cmdNList: Memo1->Lines->Add("NList success"); break;
case cmdDoCommand: Memo1->Lines->Add("DoCommand success"); break;
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1TransactionStart(TObject *Sender)
{
Memo1->Lines->Add("Starting data transaction");
//传送数据期间,将 FTP 栏所有组件置为不可用
ToolBar1->Enabled=false;
ToolBar2->Enabled=false;
ListViewRemote->Enabled=false;
}
void __fastcall TForm1::NMFTP1TransactionStop(TObject *Sender)
{
Memo1->Lines->Add("Transaction Complete");
//将组件置为可用
ToolBar1->Enabled=true;
ToolBar2->Enabled=true;
ListViewRemote->Enabled=true;
//将进度条清空
ProgressBar1->Position=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMFTP1UnSupportedFunction(TCmdType Trans_Type)
{
switch(Trans_Type)
{
case cmdChangeDir: Memo1->Lines->Add("ChangeDir not supported"); break;
case cmdMakeDir: Memo1->Lines->Add("MakeDir not supported"); break;
case cmdDelete: Memo1->Lines->Add("Delete not supported"); break;
case cmdRemoveDir: Memo1->Lines->Add("RemoveDir not supported"); break;
case cmdList: Memo1->Lines->Add("List not supported"); break;
case cmdRename: Memo1->Lines->Add("Rename not supported"); break;
case cmdUpRestore: Memo1->Lines->Add("UploadRestore not supported"); break;
case cmdDownRestore: Memo1->Lines->Add("DownloadRestore not supported"); break;
case cmdDownload: Memo1->Lines->Add("Download not supported"); break;
case cmdUpload: Memo1->Lines->Add("Upload not supported"); break;
case cmdAppend: Memo1->Lines->Add("UploadAppend not supported"); break;
case cmdReInit: Memo1->Lines->Add("ReInit not supported"); break;
case cmdAllocate: Memo1->Lines->Add("Allocate not supported"); break;
case cmdNList: Memo1->Lines->Add("NList not supported"); break;
case cmdDoCommand: Memo1->Lines->Add("DoCommand not supported"); break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{ //上级目录
int i;
i=CurrentDir.Length();
while(i>0)
{
if(CurrentDir[i]=='\\')
{
CurrentDir.Delete(i,CurrentDir.Length());
RefreshViewLocal();
break;
}
i--;
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -