自己已經研究出來了
我覺得應該不會出錯,發表出來給大家參考。
程式碼
Copy部分:
事前準備元件:MEMO,ListView,PopupMenu(可用Button取代)。
TListItems* xxx; //宣告一個ListItems的指標
AnsiString text; //用來暫存ListView1上面列的字串
xxx=ListView1->Items;
M_Copy->Clear(); //M_Copy是一個MEMO元件 動作清除
for(int count=0;countCount;count ) //回圈搜尋整個ListView1
{
if(xxx->Item[count]->Selected==true) //有被選取的部分,ListView1反藍的部分!!
{
text=xxx->Item[count]->Caption " " xxx->Item[count]->SubItems->Strings[0] " " xxx->Item[count]->SubItems->Strings[1] " "
xxx->Item[count]->SubItems->Strings[2] " " xxx->Item[count]->SubItems->Strings[3] " "; //因為我有5個欄位,若有第六個,則在最後面在加xxx->Item[count]->SubItems->Strings[5] " "以此類推。
M_Copy->Lines->Insert(0,text); //把被選取的列加入MEMO內
}
}
M_Copy->SelectAll(); //全選MEMO
M_Copy->CopyToClipboard(); //Copy至windows記憶體內,好啦!!大功告成了。
//--------------------------------
Select All部分:
事前準備元件:MEMO,ListView,PopupMenu(可用Button取代)。
TListItems* xxx;
xxx=ListView1->Items;
if(xxx->Count==0) //假如ListView1內無資料存在則跳出此程式
return;
for(int count=0;countCount;count ) //把所有ListView1上的資料都反藍。
xxx->Item[count]->Selected=true; //好啦大功告成
//--------------------------------
Save As..部分:
事前準備元件:ListView,PopupMenu(可用Button取代),SaveDialog。
動作原理先告數大家,先把ListView1上所有資訊都COPY到StringList上,在把StringList上所有資訊儲存到自己想要放置的位址上。
AnsiString path,s; //path為路徑存放字串,s為暫存ListView上每列的字串
TStringList *l=new TStringList(); //宣告一個StringList的指標
TListItems* xxx; //宣告ListItems的指標
xxx=ListView1->Items;
if(SaveDialog1->Execute()) //啟動SaveDialog
path=SaveDialog1->FileName; //存放路徑 if(path=="") //若路徑為空則跳出此程式
return; for(int i=xxx->Count-1;i>=0;i--) //迴圈搜尋ListView
{
s=xxx->Item[i]->Caption;
for(int j=0;jItem[i]->SubItems->Count;j )
s=s " " xxx->Item[i]->SubItems->Strings[j]; //收集每一列所有資訊
l->Add(s); //把s加入到StringList L 裡
} try{
try{
l->SaveToFile(path); //儲存
MessageBox(NULL,"Save Ok.","Save Success",MB_OK|MB_ICONWARNING); //顯示儲存完成
}
catch(...){
MessageBox(NULL,"Save Error.","Save Warning",MB_OK|MB_ICONWARNING); //顯示儲存失敗
}
}
__finally{
delete(l); //釋放L的空間,好啦!大功告成
}
若覺得有可以改進的地方請多指教