Q&A

  • PopupMenu의 Popup procedure..


안녕하세요..조복기입니다..



PopupMenu을 필요시에만 사용하기 위해서

AutoPopup을 False해놓고

필요한 화면에서 나오게할려고 Popup 프로시저를 사용했는데

그놈이 x,y값을 받더군요.. 팜업위치인것 같은데



근데 실행해보니까

그 x,y값이 애플리케이션의 값이 아니라 화면 전체의 x,y값이더군요..

분명 마우스다운이벤트에서 걸었는데도.. 아리송함..



현 애플리케이션의 x,y값을 가져올려면 어떻게해야하는지

질문드립니다..



비가 오니 넘 시원하네요..좋은하루되세요..

3  COMMENTS
  • Profile
    안치봉 1999.07.15 21:24
    안녕하세요.



    팝업메뉴가 팝업될대는 절대적 위치의 값을 받습니다.



    스피드버턴의 마우스다운에서 넘어오는 x, y 값은 그 스피드버턴의 상대적 위치 값입니다. 이 상대적위치를 절대적위치 값으로 바꾸어져야 합니다.



    때문에... 확실치는 않지만..



    var

    xy: TPoint;

    begin

    xy := Point(SpeedButton1.Left, SpeedButton1.Top + SpeedButton1.Height);



    xy := ClientToScreen(xy);



    popupmenu1.Popup(xy.x, xy.y);



    ===================================



    핵심은 바로 ClientToScreen 입니다. 그런데 이걸 쓸대 잘 써야합니다.

    위에선 Form1 의 ClientToScreen 을
  • Profile
    조복기 1999.07.15 22:52


    테스트는 아직 해보질않았지만 친절한 답변 감사합니다..



    좋은하루되세요..











  • Profile
    글쎄요 1999.07.15 20:16
    GetCursorPos()함수를 사용하셔요. 그럼..