TPopupMenu如何與表單的右側對齊?問題是在調用Popup(X, Y: Integer)
之前似乎沒有辦法獲得彈出式菜單的寬度。將TPopupMenu與表單的右側對齊?
我試圖得到一個類似於Chrome中系統菜單的行爲。
TPopupMenu如何與表單的右側對齊?問題是在調用Popup(X, Y: Integer)
之前似乎沒有辦法獲得彈出式菜單的寬度。將TPopupMenu與表單的右側對齊?
我試圖得到一個類似於Chrome中系統菜單的行爲。
最簡單的解決辦法是將自己推出的彈出式菜單:爲TrackPopupMenu
或各種標誌的意思
procedure TForm1.Panel1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
var
PopupPt: TPoint;
begin
PopupPt := ClientToScreen(Point(ClientWidth, 0));
TrackPopupMenu(PopupMenu1.Handle, TPM_RIGHTALIGN or TPM_TOPALIGN,
PopupPt.X, PopupPt.Y, 0, PopupList.Window, nil);
end;
見文檔TrackPopupMenuEx
。
+1一如既往的出色工作 – 2012-07-25 12:19:15
+1,塞爾特克 - 大衛說。 :-) – 2012-07-25 12:20:35
+1 - 肯說,大衛說:) – Shambhala 2012-07-25 15:47:29
重複:[Windows操作系統。更改下拉菜單位置](http://stackoverflow.com/q/4721989) – 2012-07-25 11:37:41
@Sertac - 我不明白這是一個重複的問題。 a)它用Delphi標記。 b)它不是簡單地移動彈出窗口。它要求菜單的寬度是已知的,所以可以計算位置。 – norgepaul 2012-07-25 11:46:56
在移動菜單窗口之前,您可以獲取其大小/位置。 VCL不提供您要求的功能,因此您必須使用api調用。我認爲這使得它是重複的,但也許不是。 – 2012-07-25 11:51:21