我在我的listview中有一個彈出式菜單,當想要禁止點擊不在任何行時,我想知道ListView的事件或PopupMenu我應該這樣做。當在delphi中沒有選擇行時禁用listview的彈出菜單
由於提前
我在我的listview中有一個彈出式菜單,當想要禁止點擊不在任何行時,我想知道ListView的事件或PopupMenu我應該這樣做。當在delphi中沒有選擇行時禁用listview的彈出菜單
由於提前
處理這樣的事件OnPopup
彈出菜單:
procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
if ListView1.SelCount=0 then begin
Abort;
end;
end;
不要嘗試使用鼠標光標在你的邏輯,因爲在彈出菜單可以從被調用鍵盤。
事實證明,您要禁用取決於選擇的菜單上的某些項目。您應該使用此操作,然後您可以集中控制UI屬性。一個動作可以鏈接到一個按鈕,一個彈出菜單項,一個主菜單項等等。您不想編寫啓用和禁用所有這些單獨操作來解決此問題的代碼。
對此使用OnUpdate
事件。
procedure TForm1.Action1Update(Sender: TObject);
begin
Action1.Enabled := ListView1.SelCount>0;
end;
或者有時候你想爲你將代碼表這麼多動作相同OnUpdate
:
procedure TForm1.FileActionsUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled := ListView1.SelCount>0;
end;
易短anwser,啓用或通過其名稱禁用一個菜單項:
YourPopup.EntryNameYouWantToDisable.Enable:=(YourBooleanCondition);
每個TMenuItem都有一個.Enable
屬性,您可以將其設置爲True或False。
易短anwser,啓用或通過其位置索引禁用一個菜單項:
YourPopup.Items[TheIndex].Enable:=(YourBooleanCondition);
你可以去,雖然所有的人與項目使用一個循環:.Items[TheIndex]
和知道多少與.Items.Count
。
P.D .:他們也有.Visible
,所以你可以隱藏/顯示你想要的。
當我點擊列表視圖時,你會建議不會顯示彈出窗口,但是我想顯示菜單但是禁用菜單。建議請 – CyprUS
'對於i = 0到PopupMenu1.Items.Count-1做PopupMenu1。 Items [i] .Enabled:=(ListView.SelCount> 0);' –
@CyprUS再次閱讀您的問題,看看您是否能看到我爲什麼得出這個結論。 –