popupMenu 프로퍼티에 세팅을 해도...
onMouseDown으로 체크를 해도 제가 원하는게 안나옵니다. T_T
전 Listview에서 아이템 위에 가서 오른쪽 버튼을 누르면
아이템이 셀렉트 되면서 팝업 메뉴가 나오고
아이템이 없는 빈 공간에서 오른쪽 버튼을 누르면 아무것도 안나오게 하고 싶습니다.
그런데 잘 안되네요...
shellListview를 보니 그런 식으로 잘 작동하던데...
폴더위에서 오른쪽 버튼 클릭할 때랑 파일 위에서 오른쪽 버튼을 클릭할 때도 다르고...
이런식으로 아이템종류를 구분해서 팝업 메뉴를 띄우는 방법과
빈 곳에서 오른쪽 버튼을 클릭하면 무시하고 아이템 위에서 클릭할 경우만 띄워주는 방법이 궁금합니다.
고수분들의 많은 답변 바랍니다.~~ (간단한 소스도 있으면 더욱 좋구요. ^^;;;)
님이 원하는데로 선택적 팝업을하려면 델파이에서 제공하는 PopMenu 프라퍼티에 세팅을하면 안됩니다.
PopMenu 프라퍼티를 이용하면 마우스 오른쪽 버튼이 눌리면 무조건 팝업이 띄워지기 때문에... 안되겠죠...
procedure TFormMain.ListView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Pos: TPoint;
Item: TListItem;
begin
if (Button = mbRight) then // 마우스 오른쪽버튼이 눌렸다면...
begin
Item := ListView1.GetItemAt(X, Y); // 현재 마우스좌표의 아이템을 구함
if Item <> Nil then // 아이템이 있다면
begin
// 현재 X,Y 좌표는 리스트뷰의 좌표이기 때문에 이를 스크린 좌표로
바꾸어준 다음에...
Pos := ListView1.ClientToScreen(Point(X, Y));
// 팝업을 띄운다...
PopupMenu1.Popup(Pos.X, Pos.Y);
end
end;
그리고 님 질문중에...
폴더위에서 오른쪽 버튼 클릭할 때랑 파일 위에서 오른쪽 버튼을 클릭할 때도 다르고...
이게 무슨말인지 잘 모르겠는데요... 뭐가 다르단건가요?
만약 팝업메뉴가 다르게 나타나는거라면 PopupMenu1 의 OnPopup 이벤트에서 선택적으로 처리해주면 되겠죠...
아니면 한쪽은 팝업이 뜨고 다른한쪽은 팝업이 안뜨는거라면 위에 제가 적은 코드를 조금만 수정하면 되겠습니다...