|
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 시 선택된 판넬이 나오네요..
원래 이런건지..아니면 버그인지 궁금해서 질문 드립니다.
나중에 대입 할려고 하는데 이게 문제점이 은근히 신경 쓰이네요..
|