1

TListView と TPopupMenu があり、TListItem を右クリックしたときにコンテキスト メニューを表示したいと考えています。コンポーネントを割り当てて「AutoPopup」を試しましたが、右クリックすると PopupMenu のみが表示され、必要な要素が選択されません。そこで、「OnMouseDown」を使用しようとしましたが、必要なアイテムのメニューを表示するには、もう一度クリックしてクリックする必要があります。最初のクリックで項目を選択し、2 回目でメニューを表示します。しかし、私はワンクリックで2つのことをしたい. 問題について考えていますか?

ありがとうございました。

4

3 に答える 3

1

このコードで問題が解決すると思います:

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbRight then
    ListBox1.Perform(WM_LBUTTONDOWN, 0, MakeLParam(Word(X), Word(Y)));
end;
于 2010-03-08T17:14:07.340 に答える
0

最初に TPopUpMenu をフォームに追加し、これに表示するアイテムを定義します (Delphi 2010 では、ポップアップ メニュー アイコンをダブルクリックしてアイテム エディターに入ります)。

次に、TListView の PopUpMenu 項目を新しく作成した TPopUpMenu に設定します。

2 つが正しく設定されている場合、TListView を右クリックすると、定義された項目が表示され、On-Click イベントからそれらが起動されます。

于 2010-03-08T17:33:45.343 に答える
0

問題が解決しました。予想どおり、TPopUpActionaBar を使用していたので、単純な TPopupMenu を使用する必要があります。TPopUpMenu を使用する場合は問題ありません。(下手な英語ですみません!) ありがとうございます。

于 2010-07-28T18:08:25.673 に答える