PopupMenu 的popup 位置 |
尚未結案
|
SuperLowB
初階會員 發表:96 回覆:77 積分:34 註冊:2003-06-11 發送簡訊給我 |
請問如果我有個張form 上有以下的components: Tedit、TPopupMenu、Tbutton ,當我按下Tbutton 時,就做以下動作:
procedure TForm1.Button1Click(Sender: TObject);
begin
PopupMenu1.Popup(edit1.Left,edit1.top edit1.hegiht)
end; 我想個Popupmenu顯示在edit1的左下角,但不知為何它總是顯示在form的其他位置......應怎樣做? Thanks
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi SuperLowB, 請參考這一篇討論: http://delphi.ktop.com.tw/topic.php?topic_id=71955 ----------------------------------
小弟才疏學淺,若有謬誤尚請不吝指教
----------------------------------
------
Fishman |
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
|
jimmy_wei
高階會員 發表:9 回覆:176 積分:147 註冊:2003-08-28 發送簡訊給我 |
|
SuperLowB
初階會員 發表:96 回覆:77 積分:34 註冊:2003-06-11 發送簡訊給我 |
多謝 Fishman,但請看我以下的code 好奇怪
Code 1
procedure TForm1.Button1Click(Sender: TObject); var p,p2:Tpoint; begin p:=edit1.ClientToScreen(p2); PopupMenu1.Popup(p.x,p.y edit1.height); end;這個是無問題的,但如果我換了一個寫法情況又不同了: Code 2 procedure TForm1.ShowPopUpMenuToControl(APopupMenu:TPopupMenu;AControl: TObject); var p,p2:Tpoint; begin p:=Tcontrol(AControl).ClientToScreen(p2); APopupMenu.Popup(p.x,p.y Tcontrol(AControl).Height); end; procedure TForm1.Button1Click(Sender: TObject); var p,p2:Tpoint; begin ShowPopUpMenuToControl(PopupMenu1,edit1); end;紅色的那一段code,當我按下button,個popupmenu會在form的某一處出現點解? 我也試過這樣寫: Code 3 procedure TForm1.ShowPopUpMenuToControl(APopupMenu:TPopupMenu;AControl: TObject); var p,p2:Tpoint; begin p:=edit1.ClientToScreen(p2); PopupMenu1.Popup(p.x,p.y edit1.Height); end; procedure TForm1.Button1Click(Sender: TObject); var p,p2:Tpoint; begin ShowPopUpMenuToControl(PopupMenu1,edit1); end;但綠色的那段 popupmenu的位置總是不正確.....點解? 發表人 - superlowb 於 2005/09/06 14:59:48 |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi SuperLowB, 因為你的 P2 並未被初始化,所以才會如此,建議你將 ShowPopUpMenuToControl 更改如下
procedure TForm1.ShowPopUpMenuToControl(APopupMenu:TPopupMenu;AControl: TObject); var p,p2:TPoint; begin p2.x := 0; p2.y := TControl(AControl).Height; p := TControl(AControl).ClientToScreen(p2); APopupMenu.Popup(p.x,p.y); end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
SuperLowB
初階會員 發表:96 回覆:77 積分:34 註冊:2003-06-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |