📄 c14_4f.cpp
字号:
FileNewItem->Enabled = true;
ViewLargeItem->Enabled = true;
ViewSmallItem->Enabled = true;
ViewListItem->Enabled = true;
ViewDetailsItem->Enabled = true;
ViewRefreshItem->Enabled = true;
ToolsDisconnectItem->Enabled = true;
LargeBtn->Enabled = true;
SmallBtn->Enabled = true;
ListBtn->Enabled = true;
DetailsBtn->Enabled = true;
RefreshBtn->Enabled = true;
}
break;
case prcDisconnecting: // 开始关闭连接
StatusBar->Panels->Items[0]->Text =
"正在结束连接...";
break;
case prcDisconnected: // 结束连接
{
ConnectBtn->Hint = "连接";
DirTree->Items->Clear();
FileNewItem->Enabled = false;
ViewLargeItem->Enabled = false;
ViewSmallItem->Enabled = false;
ViewListItem->Enabled = false;
ViewDetailsItem->Enabled = false;
ViewRefreshItem->Enabled = false;
ToolsDisconnectItem->Enabled = false;
LargeBtn->Enabled = false;
SmallBtn->Enabled = false;
ListBtn->Enabled = false;
DetailsBtn->Enabled = false;
RefreshBtn->Enabled = false;
StatusBar->Panels->Items[0]->Text = "已经断开";
}
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FilePopupPopup(TObject *Sender)
{ // 弹出菜单时,执行该程序,用于设置各菜单项的属性
CopyItem->Enabled = (ActiveControl == FileList) &&
(FileList->Selected != NULL);
DeleteItem->Enabled = (ActiveControl == FileList) &&
(FileList->Selected != NULL);
RenameItem->Enabled = (ActiveControl == FileList) &&
(FileList->Selected != NULL);
PasteFromItem->Enabled = (ActiveControl == DirTree) &&
(DirTree->Selected != NULL);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FileNewItemClick(TObject *Sender)
{ // 选择“新文件夹”菜单项
String DirName;
if(InputQuery("Input Box", "Prompt", DirName))
FTP->CreateDir(NodePath(DirTree->Selected) + "/" + DirName);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FileMenuClick(TObject *Sender)
{ // 用于打开“文件”菜单时,执行该程序,用户设置菜单项属性
FileCopyItem->Enabled = (ActiveControl == FileList) &&
(FileList->Selected != NULL);
FileDeleteItem->Enabled = (ActiveControl == FileList) &&
(FileList->Selected != NULL);
FileRenameItem->Enabled = (ActiveControl == FileList) &&
(FileList->Selected != NULL);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FileDeleteItemClick(TObject *Sender)
{ // 选择“文件”菜单的“删除”项,执行该程序
if ((DirTree->Selected != NULL)&&(FileList->Selected != NULL))
FTP->DeleteFile(FileList->Selected->Caption);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FileCopyItemClick(TObject *Sender)
{ // 选择“文件”菜单的“复制”项。
SaveDialog1->FileName = FileList->Selected->Caption;
if (SaveDialog1->Execute())
FTP->GetFile(NodePath(DirTree->Selected) + "/" +
FileList->Selected->Caption, SaveDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DirTreeChange(TObject *Sender, TTreeNode *Node)
{ // 当控件 DirTree 的数据改变时,触发该事件
String NP;
if((FTP->State == prcDisconnected)||(FTP->Busy)) return;
if (Node != NULL)
{
NP = NodePath(DirTree->Selected);
FileList->Items->Clear();
FTP->List(NP);
Label2->Caption = NP.Format("目录: %s", ARRAYOFCONST((NP)));
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DirTreeChanging(TObject *Sender, TTreeNode *Node,
bool &AllowChange)
{ // DirTree 开始更新
// 当 FTP 忙时禁止更新
AllowChange = !FTP->Busy;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DeleteItemClick(TObject *Sender)
{ // 用户选择弹出菜单的“删除”项时,触发该事件
if(ActiveControl == DirTree)
FTP->DeleteDir(NodePath(DirTree->Selected));
if (ActiveControl == FileList)
FTP->DeleteFile(NodePath(DirTree->Selected) + "/" +
FileList->Selected->Caption);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::CopyItemClick(TObject *Sender)
{ // 用户选择弹出菜单的“复制”项时,触发该事件
SaveDialog1->FileName = FileList->Selected->Caption;
if (SaveDialog1->Execute())
FTP->GetFile(NodePath(DirTree->Selected) + "/" +
FileList->Selected->Caption, SaveDialog1->FileName);
}
//---------------------------------------------------------------------------
void TMainForm::Disconnect()
{ // 断开连接
FTP->Quit();
Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void _fastcall TMainForm::CreateItem(String &filename, int Attributes, int Size,
String& Date)
{ // 自定义成员函数,用于在文件列表中增加项。
String Ext;
TSHFileInfo SHFileInfo;
TListItem * Result;
Result = FileList->Items->Add();
Result->Caption = filename;
if (Size > 0)
{
int Size1 = Size/1024;
if (Size1 != 0)
{
Result->SubItems->Add(String ((String)Size1));
Result->SubItems->Strings[0] = Result->SubItems->Strings[0] + "KB";
}else
Result->SubItems->Add(Size);
}
else
Result->SubItems->Add("");
if(Attributes == 1)
{
Result->SubItems->Add("File Folder");
Result->ImageIndex = 3;
}
else
{
Ext = ExtractFileExt(filename);
SHGetFileInfo(String("C:\\*." + Ext).c_str(), 0, &SHFileInfo,
sizeof(SHFileInfo),
SHGFI_SMALLICON | SHGFI_SYSICONINDEX | SHGFI_TYPENAME);
if (String(SHFileInfo.szTypeName).Length() == 0)
{
if (Ext.Length() > 0)
{
Ext.Delete(1, 1);
Result->SubItems->Add(Ext + " File");
}
else
Result->SubItems->Add("File");
}
else
Result->SubItems->Add(SHFileInfo.szTypeName);
Result->ImageIndex = SHFileInfo.iIcon;
}
Result->SubItems->Add(Date);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FileListChange(TObject *Sender, TListItem *Item,
TItemChange Change)
{ // 文件列表改变
if (FileList->Selected != NULL)
CopyButton->Enabled = true;
else
CopyButton->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ToolsASCIIItemClick(TObject *Sender)
{ // 选择了“工具”菜单的“文本传输”项
FTP->Type_ (ftpAscii);
ToolsASCIIItem->Checked = true;
ToolsBinaryItem->Checked = false;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ToolsBinaryItemClick(TObject *Sender)
{ // 选择了“工具”菜单的“二进制传输”项
FTP->Type_ (ftpBinary);
ToolsBinaryItem->Checked = true;
ToolsASCIIItem->Checked = false;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -