Q&A

  • StringGrid에 마우스오른쪽 팝업 적용시
안녕하세요?

초보 델피언 코앤입니다.

StringGrid를 사용하는 중에, 수정, 삭제 기능을 적용하고 싶어서
이를 popupmenu로 만들어보려고 하거든요.

그래서 StringGrid의 PopupMenu property에 PopupMenu1 등록했더니
팝업이 잘 뜨기는 한데..

grid영역 전체에서 팝업이 뜹니다.
제목줄이랑 특정 col 에서는 뜨면 안될꺼 같은데

이게 이벤트 캡춰해서 뜨는게 아니다보니
어떻게 처리해야할지 모르겠네요.

1  COMMENTS
  • Profile
    최용일 2007.11.29 02:36
    팝업메뉴를 자동으로 띄우시지 마시고 팝업메뉴(TPopupMenu)의 AutoPopup속성을 False로 해서 메뉴얼로 띄우세요.
    그리고 스트링그리드의 OnMouseDown이벤트에서 팝업메뉴를 띄우세요...
    스트링그리드의 MouseToCell메소드를 이용하시면 마우스좌표로 클릭한 셀의 Row와 Column을 알 수 있습니다. 이걸 이용해서 특정 컬럼이면 안띄우시면 됩니다.

    <!--CodeS-->
    procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      P: TPoint;
    begin
      P := TStringGrid(Sender).ClientToScreen(Point(X, Y));
      PopupMenu1.Popup(P.X, P.Y);
    end;
    <!--CodeE-->