有關TreeView顯示Node的問題 |
尚未結案
|
cimgg
一般會員 發表:21 回覆:30 積分:10 註冊:2005-05-10 發送簡訊給我 |
各位先進,小弟的程式有一個問題,在加載TreeView 的Node時由於會將整個磁盤的目錄一下子加載進去,所以效率很差,需要等很久時間。現在小弟想利用TreeView Click事件觸發加載。具體就是每次點Node的時候加載相應的下一級子目錄,這樣效率就會比較好,請大大幫忙看看應該怎樣改,偶想了很久,還是不行啊。以下為我的部分代碼。
void TForm1::ListViewAddDirectory()
{ /*目錄添加涵式*/
TListItem *mItem;
TSearchRec sr;
if (FindFirst(CurrentDir "\\*.*",faDirectory,sr)==0)
{
if (sr.Attr==faDirectory&&sr.Name!="."&&sr.Name!="..")
{
mItem=ListView1->Items->Add();
mItem->Caption=sr.Name;
mItem->ImageIndex=1;
mItem->SubItems->Add(AnsiString(""));
mItem->SubItems->Add(AnsiString(""));
mItem->SubItems->Add("文件目錄");
mItem->SubItems->Add(FileDateToDateTime(sr.Time));
}
}
while (FindNext(sr)==0)
{
if (sr.Attr==faDirectory&&sr.Name!="."&&sr.Name!="..")
{
mItem=ListView1->Items->Add();
mItem->Caption=sr.Name;
mItem->ImageIndex=1;
mItem->SubItems->Add(AnsiString(""));
mItem->SubItems->Add(AnsiString(""));
mItem->SubItems->Add("文件目錄");
mItem->SubItems->Add(FileDateToDateTime(sr.Time));
}
}
FindClose(sr);
} //-------------------------------------------------------------------
void __fastcall TForm1::TreeView1Click(TObject *Sender)
{ /*文件更新事件*/
AnsiString dName[20],dir;
int i=0,j;
TTreeNode *mNode=TreeView1->Selected;
if (mNode->Text!="我的電腦")
{
if (mNode!=NULL)
{
do{
dName[i]=mNode->Text;
mNode=mNode->Parent;
i ;
}while (mNode->Text!="我的電腦");
dir=dName[i-1];
for (j=i-2;j>=0;j--)
dir=dir "\\" dName[j];
CurrentDir=dir;
}
UpdateListView();
}
} 授人玫瑰,手有余香 發表人 - cimgg 於 2005/06/23 16:55:10
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
cimgg
一般會員 發表:21 回覆:30 積分:10 註冊:2005-05-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |