안녕하세요..조복기입니다..
PopupMenu을 필요시에만 사용하기 위해서
AutoPopup을 False해놓고
필요한 화면에서 나오게할려고 Popup 프로시저를 사용했는데
그놈이 x,y값을 받더군요.. 팜업위치인것 같은데
근데 실행해보니까
그 x,y값이 애플리케이션의 값이 아니라 화면 전체의 x,y값이더군요..
분명 마우스다운이벤트에서 걸었는데도.. 아리송함..
현 애플리케이션의 x,y값을 가져올려면 어떻게해야하는지
질문드립니다..
비가 오니 넘 시원하네요..좋은하루되세요..
팝업메뉴가 팝업될대는 절대적 위치의 값을 받습니다.
스피드버턴의 마우스다운에서 넘어오는 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 을