我有 TPopup 菜单,其中设置了具有以下属性的 3 个项目。
AutoCheck = True
RadioItem = True
并且对于第一个菜单项,我也将 Checked
属性设置为 True
,因此菜单至少有一个项目在最初显示时被选中。这一切都很好,但是如果我单击当前选中的项目,复选(点)就会消失,我想这样做以便始终选中弹出窗口中的至少 1 个项目。我该怎么做?
最佳答案
组中的项目也应该具有相同的非零 GroupIndex
.这与 RadioItem
一起应该使项目表现得像一个 radio 组。
但是,似乎AutoCheck
不遵守 GroupIndex
和 RadioItem
属性,因为当您单击当前选中的项目时它会清除选中。
(可以说,这可以被认为是 VCL 中的错误。)
解决方法如下:
将 AutoCheck
设置为 False
,为所有项目分配相同的非零 GroupIndex
和一个通用的 OnClick
处理程序像这样检查点击的项目:
procedure TForm1.ItemClick(Sender: TObject);
begin
(Sender as TMenuItem).Checked := True;
end;
或者使用Actions ,对于他们来说,这似乎按预期工作。
关于delphi - 确保始终选中 TPopup 菜单中的至少一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681420/