글 잘 봤습니다.
다 좋은데 약간의 문제가 있어 수정했습니다.
페이지 이동이 원할하지 않아서 소스를 살펴보던 중 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로 되어 있는데요
: : :
: : : 가끔 프로그램 짜다 보면 나중에 새로운 탭을 추가해서 중간에 끼워넣고 싶은경우가 있는데
: : :
: : : 탭들의 순서를 바꿀수 있는 방법이 뭐가 제일 편한가요?
: : :
: : : 노가다로 콤포넌트 다 복사해서 붙여야 하는건지?
: : :
: : : 그냥 마우스 드래그로 순서를 바꿀수 있었으면 편한데...