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
[43942] 마우스 Up 이벤트시 버그아닌 버그 질문 입니다.
둥이네 [grin79] 849 읽음    2006-03-06 17:06
Panel 을 여러개 만들어서 사용중입니다.
하나의 판넬 위에다가. 여러 판넬을...겹쳐서 사용 중입니다.
한 판넬에서 다른 판넬로 마우스 클릭후 이동시에..
각각 판넬을 알아 낼려고 합니다.
각각 tag 에 값을 넣어서 확인 할려고 하는데..
다른 곳에서 확인하면..마우스 up 시 받는 Sender 은 마우스 클릭시 선택한 판넬이나 버튼 등을 받는걸로 알고 있습니다.

void __fastcall TForm1::Panel3MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{

        TPanel *PanTest =  (TPanel *)Sender;
         MouDown = True;

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Panel3MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
        TPanel *Pan =  (TPanel *)Sender;
         ClickPan   = Pan->Tag;
        //ShowMessage(IntToStr(ClickPan));
       // MouDown = False;
        //PanTest->BorderStyle = bsNone;

        POINT pPos ;
        pPos.x  = X;
        pPos.y = Y;
        GetCursorPos(&pPos);
        if (FindControl(WindowFromPoint(pPos)) == NULL)
           return ;

        TPanel *PanTest2 =  (TPanel *)FindControl(WindowFromPoint(pPos));
        int upPan   = PanTest2->Tag;
        if(MouDown)
        {
                ShowMessage(IntToStr(ClickPan) + "  " + IntToStr(upPan));
        }
        MouDown = False;

}

이렇게 하면 ShowMessage 에..
  tag 값이 15번 인 판넬에서  16번으로 마우스 클릭해서 이동후 마우스 up 을 하면..
15  16 이라고 잘나오지만..
void __fastcall TForm1::Panel3MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{

        TPanel *PanTest =  (TPanel *)Sender;
        PanTest->BorderStyle = bsSingle;
        MouDown = True;

}

PanTest->BorderStyle = bsSingle;
이 부분만 추가하면은... 똑같이 15번에서 16번 판넬로 가서 마우스 클릭을 때면..
   16 16 으로 나옵니다.
처음에는 판넬에서 마우스 이벤트 받을때는 마우스 up 에서도 클릭스 받은 같을 Sender 로 반환 하는줄 알았는데..
이상하게..
PanTest->BorderStyle = bsSingle; 부분을 넣어서 마우스로 클릭된 판넬을 나타낼려고 하면.....
Up 할때 받는 Sender 판넬이... 마우스 down 시 선택된 판넬이 아니고 up 시 선택된 판넬이 나오네요..
원래 이런건지..아니면 버그인지 궁금해서 질문 드립니다.

나중에 대입 할려고 하는데 이게 문제점이 은근히 신경 쓰이네요..

+ -

관련 글 리스트
43942 마우스 Up 이벤트시 버그아닌 버그 질문 입니다. 둥이네 849 2006/03/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.