|
이번에 트리뷰로 해서 원하는 data타 폴더에 트리로 된 구성을 짜려고 합니다.
음 많이 생각해서 해봤는데..
아직도 구현이 잘안되더라구용....
int iNodeValue;
int iNodeValue_1;
int iValue;
TTreeNode* node;
void __fastcall TDataViewDlg::FormShow(TObject *Sender)
{
AnsiString Path = "c:/CSpring/data/";
DirInsert(Path);
iNodeValue_1 = 0;
}
void __fastcall TDataViewDlg::DirInsert(AnsiString strPath)
{
TStringList* list = new TStringList;
AnsiString Temp;
TSearchRec sr;
AnsiString sFileName ;
AnsiString Path = strPath +"/*.*";
try
{
if(FindFirst(strPath + "*.*", faAnyFile, sr) == 0)
{
do
{
if((sr.Name != "." && sr.Name != "..") && sr.Attr == faDirectory)
{
TreeView1->Items->Add(NULL, sr.Name);
TTreeNode* node = TreeView1->Items->Item[iValue];
AnsiString sTemp = TreeView1->Items->Item[iValue]->Text;
list->Add(sr.Name);
Temp = strPath + sr.Name;
iNodeValue = 0;
FileInsert(node,Temp,iValue+1);
iValue++;
iValue += iNodeValue;
}
}
while(FindNext(sr) == 0);
}
}
__finally
{
FindClose(sr);
}
}
//---------------------------------------------------------------------------
int __fastcall TDataViewDlg::FileInsert(TTreeNode* node,AnsiString Path,int position)
{
TSearchRec sr;
if(FindFirst(Path + "/*.*", faAnyFile , sr) == 0)
{
if(sr.Attr == faArchive || faReadOnly || faSysFile || faHidden)
{
if(!(sr.Name == ".") || (sr.Name == ".."))
{
TreeView1->Items->AddChild(node, sr.Name);
node = TreeView1->Items->Item[position];
}
}
do
{
if(sr.Attr == faArchive || faReadOnly || faSysFile || faHidden )
{
if((sr.Name == ".") || (sr.Name == "..")) continue;
TreeView1->Items->AddChild(node, sr.Name);
node = TreeView1->Items->Item[position];
iNodeValue++;
position += iNodeValue;
FileInsert(node,Path + "/" + sr.Name,TreeView1->Items->Count);
}
}
while(FindNext(sr) == 0);
}
FindClose(sr);
}
이렇게 했지만.. 원하는 결과는 나오지 않습니다.
구성이
LG전자
2005
200510
2005101112.xsl
2006
2007
삼성전자
2005
2006
2007
200710
20071011.xsl
이런식으로 구성을 합니다.
음.. 잘되신분이나 .. 조언좀 부탁드립니다.
정형화된것이 아닌.. 사용자가 임의로 등록이 가능해서 폴더가 많이 늘어납니다...
|