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
[23063] Re:[질문]꼭좀 도와주세요......TreeView
유영인.Chris [cuperido] 913 읽음    2002-12-06 13:48
차라리, 노드를 만드는 시점에서, 원하시는 기본값으로 값을 셋팅을 하고,
NULL 일때 따로 노드를 삭제하는것은 어떻까요..?

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1    *Form1;
TTreeNode *AddtionNode = NULL;
bool       Edited = false;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{

AddtionNode = TreeView1->Items->AddChild(TreeView1->Selected, "새 폴더");
Edited      = false;
GroupNodeJustAdded(AddtionNode);

}
//---------------------------------------------------------------------------
void TForm1::GroupNodeJustAdded(TTreeNode *NewNode)
{

if (NewNode->Parent) NewNode->Parent->Expand(false);

NewNode->ImageIndex = 0;
NewNode->SelectedIndex = 1;
NewNode->StateIndex = -1;
NewNode->EditText();

}
void __fastcall TForm1::TreeView1Edited(TObject *Sender, TTreeNode *Node, AnsiString &S)
{

if(AddtionNode) {
   if(S == "") {
     AddtionNode->Delete();
     AddtionNode = NULL;
   }
}

}

//---------------------------------------------------------------------------




권혁준 님이 쓰신 글 :
: 폼에 있는 뉴그룹버튼을 클릭하면  
: void __fastcall TForm1::NewGroupClick(TObject *Sender)  
: {  
:    TTreeNode *TempNode;  
:    TTreeView *RadioView; 
:    ...............  
:
: //새로운 노드를 만들고 ( ccc ) 
:
:    TempNode = RadioView->Items->AddChild(RadioView->Selected, "");  
:    GroupNodeJustAdded(TempNode);  
:    .......................  
:
: }  
:
: aaa 
:  | 
:  +bbb 
:    | 
:    +ccc 
:
: void TForm1::GroupNodeJustAdded(TTreeNode *NewNode)  
: {  
:  if (NewNode->Parent) { 
:       NewNode->Parent->Expand(false); 
:       }     
:    NewNode->ImageIndex = 0; 
:    NewNode->SelectedIndex = 1; 
:    NewNode->StateIndex = -1; 
:    NewNode->EditText(); //그 노드(ccc)를 에디트모드로 만들게 했습니다.  
:
: } 
: // 검사는 이곳에서 하려 합니다 
: void __fastcall TForm1::RadioViewEdited(TObject *Sender, TTreeNode *Node, 
:       AnsiString &S) 
: { 
:    if ( S.IsEmpty() ) // ccc가 비었을때 
:         { 
:             MessageDlg("Please Type Group Name", mtError,TMsgDlgButtons() << mbOK, 0); 
:             Node->EditText();// 안되네요... 
:             //Node->Delete();아예 지워버릴려고 해도 access violation 나네요
:         }     
: } 
:
: 제가 하고 싶은것은 아무것도 입력되지 않으면 새로운 노드가 안생기게 하려고 합니다..  
: 아무것도 입력되지 않았을때 트리뷰를 빠져나간다거나 뉴그룹버튼을 누르면..  
: 아무것도 입력되지 않은 노드에 포커스를 주었음 합니다 에디트상태로...
: 그런데 OnEdited()는 수정이 되었을때만 호출되어지는군요....
: 그럼 수정안한 상태로 다른 동작을 하면....호출이 안되는건데..
: 이러면 안되거든요.....1. 무조건 수정이 되게 하려면....  
: 어떻게 해야 할까요?...
:
: 2. 검색해보니 OnEdited()에서는 EditText()가 안된다고 하네요,,
: 그럼 어떻게 하지요?
:
: 부탁합니다...고수님들
:

+ -

관련 글 리스트
23058 [질문]꼭좀 도와주세요......TreeView 권혁준 887 2002/12/06
23063     Re:[질문]꼭좀 도와주세요......TreeView 유영인.Chris 913 2002/12/06
23068         Re:Re:감사합니다 권혁준 525 2002/12/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.