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
[48178] Re:Re:Re:TPageControl에서 탭 위치 바꾸기
danga80 [] 1376 읽음    2007-02-23 13:31
글 잘 봤습니다.

다 좋은데 약간의 문제가 있어 수정했습니다.

페이지 이동이 원할하지 않아서 소스를 살펴보던 중 for 루프가 한 번 덜 돌아서 그렇다는 결론을

제 나름대로 냈습니다. 고쳐서 하니까 괜찮더군요.

PageControl1DragDrop 이벤트 코드의 일부를 수정했습니다.

    int iActivePage=PageControl1->ActivePageIndex;
    TRect TabRect;
    if(Sender= PageControl1)
    {
        //for( int j = 0 ; j<PageControl1->PageCount - 1;j++) // 원래 소스
                for( int j = 0 ; j<PageControl1->PageCount;j++)  // 고친부분-> 모든 TabShee를 검사한다.
                // -1 되어있던 부분을 삭제했습니다.
        {

            PageControl1->Perform(TCM_GETITEMRECT, j, LPARAM(&TabRect)) ;
            if( PtInRect(TabRect, Point(X, Y) ) )
            {
               if( PageControl1->ActivePage->PageIndex != j )
               {
                    PageControl1->ActivePage->PageIndex = j;
               }
            }
        }
    }
장성호 님이 쓰신 글 :
: 소리바람.OJ 님이 말한 사이트에서 보고  변환해 봤어요
: http://delphi.about.com/cs/adptips2004/a/bltip0304_3.htm
:
: 간단하네요...
:
: void __fastcall TForm1::PageControl1MouseDown(TObject *Sender,
:       TMouseButton Button, TShiftState Shift, int X, int Y)
: {
:     PageControl1->BeginDrag(false) ;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::PageControl1DragOver(TObject *Sender,
:       TObject *Source, int X, int Y, TDragState State, bool &Accept)
: {
:     if (Sender == PageControl1)
:          Accept = true;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::PageControl1DragDrop(TObject *Sender,
:       TObject *Source, int X, int Y)
: {
:     int iActivePage=PageControl1->ActivePageIndex;
:     TRect TabRect;
:     if(Sender= PageControl1)
:     {
:         for( int j = 0 ; j<PageControl1->PageCount - 1;j++)
:         {
:
:             PageControl1->Perform(TCM_GETITEMRECT, j, LPARAM(&TabRect)) ;
:             if( PtInRect(TabRect, Point(X, Y) ) )
:             {
:                if( PageControl1->ActivePage->PageIndex != j )
:                {
:                      PageControl1->ActivePage->PageIndex = j;
:                }
:             }
:         }
:     }
: }
: //---------------------------------------------------------------------------
:
:
:
:
: 소리바람.OJ 님이 쓰신 글 :
: : 여러 방법이 있습니다.
: :
: : 1. 상용 컴포넌트를 구입한다.
: : 2. 드레그앤드랍 이벤트를 구현한다.
: :
: : 2번의 방법이 구를 검색에서 나오는군요.
: : 다만, 델파이라는거~
: :
: : http://delphi.about.com/cs/adptips2004/a/bltip0304_3.htm
: :
: : 지금 환경이 안 되어서 변환은 못 해 드리지만,
: : 보시고 구현하시기에는 무리가 없을 듯 합니다.
: :
: : 검색의 생활화~!
: : 즐거운 하루 보내세요.
: :
: : 크레브 님이 쓰신 글 :
: : : 페이지 콘트롤 사용할때 각 탭이 TTabSheet로 되어 있는데요
: : :
: : : 가끔 프로그램 짜다 보면 나중에 새로운 탭을 추가해서 중간에 끼워넣고 싶은경우가 있는데
: : :
: : : 탭들의 순서를 바꿀수 있는 방법이 뭐가 제일 편한가요?
: : :
: : : 노가다로 콤포넌트 다 복사해서 붙여야 하는건지?
: : :
: : : 그냥 마우스 드래그로 순서를 바꿀수 있었으면 편한데...

+ -

관련 글 리스트
48157 TPageControl에서 탭 위치 바꾸기 크레브 1026 2007/02/22
48165     Re:TPageControl에서 탭 위치 바꾸기 30억 1663 2007/02/22
48170         헉!PageIndex가 있었다니... 감사~~ ^^;; 크레브 1141 2007/02/22
48160     Re:TPageControl에서 탭 위치 바꾸기 소리바람.OJ 1168 2007/02/22
48169         Re:Re:TPageControl에서 탭 위치 바꾸기 장성호 2034 2007/02/22
48178             Re:Re:Re:TPageControl에서 탭 위치 바꾸기 danga80 1376 2007/02/23
48171             아구~이런 수고까지 ... ^^; 크레브 1037 2007/02/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.