C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[42259] 트리뷰에서 폴더방식의 처리 문제
오호라 [] 764 읽음    2005-10-25 10:42
이번에 트리뷰로 해서 원하는 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

이런식으로 구성을 합니다.
음..  잘되신분이나 .. 조언좀 부탁드립니다. 
정형화된것이 아닌..  사용자가  임의로 등록이 가능해서  폴더가 많이 늘어납니다...

+ -

관련 글 리스트
42259 트리뷰에서 폴더방식의 처리 문제 오호라 764 2005/10/25
42352     Re:트리뷰에서 폴더방식의 처리 문제 박지훈.임프 853 2005/11/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.