TPopupMenuをフォームの右側に配置するにはどうすればよいですか?問題は、を呼び出す前にポップアップメニューの幅を取得する方法がないように見えることですPopup(X, Y: Integer)
。
Chromeのシステムメニューと同様の動作を取得しようとしています。
最も簡単な解決策は、ポップアップメニューを自分で起動することです。
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;
さまざまなフラグの意味についてはTrackPopupMenu
、ドキュメントを参照してください。TrackPopupMenuEx
設定Alignment
しpaRight
て電話することもできます
with ClientToScreen(Point(ClientWidth - 1, 0)) do
Popup(X, Y);