2010-03-08 48 views
1

我有一個TListView和TPopupMenu,我想在右鍵單擊TListItem時顯示一個上下文菜單。 我通過分配組件來嘗試「AutoPopup」,但右鍵單擊時只顯示PopupMenu,並且未選中想要的元素。所以我嘗試使用「OnMouseDown」,但我們需要再次單擊並再次單擊以顯示所需項目上的菜單。第一次點擊是選擇項目,第二次顯示菜單。 但我只需要點擊一下即可完成這兩件事。你有沒有想過這個問題?雙擊右鍵以顯示帶有TListView的PopUpMenu!

謝謝。

+0

我不認爲有問題,因爲選擇發生在鼠標按下,而彈出菜單顯示在鼠標上。簡單地分配列表視圖的PopupMenu應該可以工作。它在我的程序中以報告視圖樣式顯示項目。 – mghie 2010-03-08 15:15:41

回答

0

問題解決了。正如所料,我使用的是TPopUpActionaBar,所以必須使用一個簡單的TPopupMenu 當使用TPopUpMenu時,沒有問題! (請原諒我的英文不好!) 謝謝。

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; 
+0

至少如果你指的是TListBox。如上所述,TListView沒有問題。 – 2010-03-08 17:17:53

+0

我沒有TListBox,但是TListView(vsReport as ViewStyle) 我將測試Tlistview上的代碼。謝謝。 – djiga4me 2010-03-10 17:44:57

0

加上一個TPopUpMenu到您的形式和定義要在顯示屏上的項目(2010年德爾福在彈出的菜單圖標,雙擊進入項目編輯器)

其次將TListView中的PopUpMenu項目設置爲新創建的TPopUpMenu。

如果這兩個設置正確,當你上了TListView右擊將看到定義的項目,並從他們在擊事件解僱他們關閉