10

TPopupMenuをフォームの右側に配置するにはどうすればよいですか?問題は、を呼び出す前にポップアップメニューの幅を取得する方法がないように見えることですPopup(X, Y: Integer)

Chromeのシステムメニューと同様の動作を取得しようとしています。

ここに画像の説明を入力してください

4

2 に答える 2

14

最も簡単な解決策は、ポップアップメニューを自分で起動することです。

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

于 2012-07-25T11:56:15.957 に答える
13

設定AlignmentpaRightて電話することもできます

with ClientToScreen(Point(ClientWidth - 1, 0)) do
  Popup(X, Y);
于 2012-07-25T12:30:36.597 に答える