|
감사합니다. 답변 주셔서... MouseToCell이라는 함수가 있네요..
한 가지 주의할 점은 인자로 넘어오는 X, Y가 StringGrid내의 상대좌표라서
스크린의 좌표로 변환해서 popup창을 띄워야 하네요..넘겨줘야 하네요..
다음과 같이 수정해서 해결했습니다.
좋은 답변 감사합니다.
void __fastcall TForm_Main::StringGrid_AlarmMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if ( Button == mbRight ) { // 마우스 오른쪽 버튼 눌렀을 때
int ACol, ARow;
TPoint Point, Point2;
Point.x = X;
Point.y = Y;
Point2 = ClientToScreen(Point);
StringGrid_Alarm->MouseToCell(Point2.x, Point2.y, ACol, ARow);
PopupMenu2->Popup(Point2.x, Point2.y);
}
}
김상면 님이 쓰신 글 :
: 제가 영어를 몰라서 해석을 대충 해 보았습니다만 아래와 같이 하니 되네요
:
:
:
: #include <stdio.h>
: void __fastcall TForm1::StringGridMouseDown(TObject *Sender,
: TMouseButton Button, TShiftState Shift, int X, int Y)
: {
: int ACol,ARow;
: char temp[255];
:
: StringGrid->MouseToCell(X,Y,ACol,ARow);
: sprintf(temp,"%d : %d",ARow,ACol);
: MessageBox(Handle,temp,"d",MB_OK);
: }
: //---------------------------------------------------------------------------
:
: 에러나도 전 몰라용
: (이거 놀리는 거 아닙니다)
:
: 그럼
:
:
: 땅주인 님이 쓰신 글 :
: : StringGrid에서 popup창을 구현하려 합니다.
: :
: : popup창이 뜨고 나면 그리드에서 마우스 오른쪽을 누른 row를 구해서
: : 해당 row의 각 cell의 값을 읽어 어떤 처리를 하려 합니다.
: :
: : 그런데, 디자인 모드에서 popup 객체 만들어서, 스트링 그리드의 popup
: : 이벤트에 붙여서 셀의 위치를 구하니 마우스 오른쪽을 클릭한 위치의 셀이
: : 아니라 현재 셀이 선택되어 있는 셀의 정보가 들어옵니다.
: :
: : 마우스 오른쪽 버튼을 눌렀을 때 해당 Cell의 위치를 어떻게 파악하는 지요?
: :
: : OnMouseDown() 이벤트에서 X,Y자표로 해보려고 하는데... 어떻게 해야 하는 지..
: :
: : 질문의 요지는 스트링 그리드에서 마우스 오른쪽 버튼을 눌었을 때
: : 그 셀이 어느 셀인 지 알아내는 방법을 알려주시면 ... 감사감사감사..하겠습니다.
: :
: : 감사합니다.
: :
: : void __fastcall TForm_Main::StringGrid_AlarmMouseDown(TObject *Sender,
: : TMouseButton Button, TShiftState Shift, int X, int Y)
: : {
: : if ( Button == mbRight ) { // 마우스 오른쪽 버튼 눌렀을 때
: : // X,Y 자표가 가리키는 셀을 어떻게 파악하는 지요?
: : PopupMenu2->Popup(X,Y)
: : }
: : }
: :
|