2016-08-10 5 views
0

私は「映画」アイテムと「スナップショット」を持つ1つのTListBoxを持っています。両方のリストボックスに1つのポップアップメニューを使用したいと思います。しかし、popups menuitemのonClickイベントでは、どのリストボックスが使用されたかをどのように解決するのですか? DeleteAll1は、ポップアップメニューでTMenuItemある同じTPopupメニューを使用する2つのTListBox?

void __fastcall TMainForm::DeleteAll1Click(TObject *Sender) 
{ 
    TListBox* lb = dynamic_cast<TListBox*>(Sender); 

    if(lb == mMoviesLB) 
    { 
... 

は、私はこれを試してみました。

void __fastcall TMainForm::DeleteAll1Click(TObject *Sender) 
{ 
    TListBox* lb = dynamic_cast<TListBox*>(PopupMenu1->PopupComponent); 
    ... 
} 

TPopupMenuが自動的に表示された場合(すなわち:右何かここに欠けているので、ポンドは

+0

、 'Sender'は、リストボックスではありませんので、' dynamic_castを(送信者) 'リターン'NULL'。これはおそらくメニューです。 'ShowMessage(Sender-> ClassName());'のようなものを関数の先頭に追加して、それが何であるかを確認してください。 –

+0

良いヒント、Sender-> ClassName().. Senderが実際にTMenuItemコンポーネントであることがわかりました。質問は自分自身をListBoxコンポーネントに戻す方法ですか? –

答えて

3

TPopupMenu::PopupComponentプロパティは、ポップアップメニュー、例えば表示されたUIコントロールを示しています。..常にNULLですTPopupMenu::AutoPopupがtrueのときにコントロールをクリック)、PopupComponentが自動的に設定されます。しかし、あなた自身TPopupMenu::Popup()を呼び出す場合は、事前にそれを割り当てない限り、PopupComponentは例えば、NULLになります:あなたのケースでは

PopupMenu1->PopupComponent = ListBox1; 
PopupMenu1->Popup(X, Y); 
関連する問題