C++ builder XE二种载入文件的方法OpenDialog多文件载入与FolderDialog文件夹载入
调试环境:win7,C++ builder XE 10.2,TMS组件调试通过。
功能实现:实现了TOpenDialog组件多文件载入与TFolderDialog组件文件夹载入这是一个TMS组件。
实例如下图,有源码下载,和源码查看。
//---------------------------------------------------------------------------
//直接选取多文件方法,OpenDialog多文件载入
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
OpenDialog1->Options<<ofAllowMultiSelect<<ofFileMustExist;//允许选择多个文件
OpenDialog1->Title="请选择导入的文件!";
OpenDialog1->Filter="直选大底 每行一注(*.txt)|*.txt|ALL Files(*.*)|*.*";
//设置文件过滤
OpenDialog1->DefaultExt="TXT";
//设置缺省扩展名
//BitBtn1图片要在上方,得设置layout为blglyphTop
//OpenDialog1->ofAllowMultiSelect=true!
//
int num,Lnum;
if(OpenDialog1->Execute())
{
num=OpenDialog1->Files->Count;
Lnum=ListView1->Items->Count;
//为空退出
if (num==0)
return;
//
ListView1->Items->BeginUpdate();
TListItem *pItem=0;
for(int i=0;i<num;i++)
{
pItem=ListView1->Items->Add();
pItem->Caption=Lnum+i+1;
pItem->SubItems->Add(ExtractFileName(OpenDialog1->Files->Strings[i]));
pItem->SubItems->Add("***"); //注数
pItem->SubItems->Add(OpenDialog1->Files->Strings[i]); //注数
pItem->SubItems->Add("*");
}
ListView1->Items->EndUpdate();
Lnum=ListView1->Items->Count;
ListView1->Columns->Items[0]->Caption="id ["+AnsiString(Lnum)+"]";
}
}
//---------------------------------------------------------------------------
//用选取文件夹来载入所有文件,FolderDialog文件夹载入(这是一个TMS组件)
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
AnsiString Dir="";
//Dir里保存着所选的文件夹绝对路径
if(FolderDialog1->Execute())
{
Dir =FolderDialog1->Directory;
}
//-----------------------
if (Dir.Length()==0)
return;
int num,Lnum;
Lnum=ListView1->Items->Count;
TListItem *pItem=0;
TSearchRec sr;
if (FindFirst(Dir+"\\*.txt",faAnyFile,sr) == 0)
{ ListView1->Items->BeginUpdate();
TStringList *Flist =new TStringList;
Flist->Clear();
do
{
pItem=ListView1->Items->Add();
pItem->Caption=Lnum+1;
pItem->SubItems->Add(sr.Name);
pItem->SubItems->Add("***"); //注数
pItem->SubItems->Add(Dir+"\\"+sr.Name); //注数
Lnum++;
} while(FindNext(sr) == 0);
FindClose(sr);
ListView1->Items->EndUpdate();
}
Lnum=ListView1->Items->Count;
ListView1->Columns->Items[0]->Caption="id ["+AnsiString(Lnum)+"]";
}
//---------------------------------------------------------------------------
//全选文件
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
//全选文件
for(int i=0;i<ListView1->Items->Count;++i)
{
//ListView1->Items->Item[i]->Selected=true;
ListView1->Items->Item[i]->Checked=true;
}
}
//---------------------------------------------------------------------------
//反选文件
//--------------------------------------------------------------------------
void __fastcall TForm1::BitBtn4Click(TObject *Sender)
{
for(int i=0;i<ListView1->Items->Count;++i)
{
//ListView1->Items->Item[i]->Selected=true;
if (ListView1->Items->Item[i]->Checked==true)
ListView1->Items->Item[i]->Checked=false;
else
ListView1->Items->Item[i]->Checked=true;
}
}
//---------------------------------------------------------------------------
//删除文件
//--------------------------------------------------------------------------
void __fastcall TForm1::BitBtn5Click(TObject *Sender)
{
//删除文件
for(int i=ListView1->Items->Count-1;i>=0;i--)
{
if(ListView1->Items->Item[i]->Checked==true )
ListView1->Items->Delete(i);
}
int Lnum=ListView1->Items->Count;
ListView1->Columns->Items[0]->Caption="id ["+AnsiString(Lnum)+"]";
}
//---------------------------------------------------------------------------
//清空文件
//--------------------------------------------------------------------------
void __fastcall TForm1::BitBtn6Click(TObject *Sender)
{
//清空文件
ListView1->Clear();
//RzToolButton4->Click();
int Lnum=ListView1->Items->Count;
ListView1->Columns->Items[0]->Caption="id ["+AnsiString(Lnum)+"]";
}
//---------------------------------------------------------------------------