delphi - 确保始终选中 TPopup 菜单中的至少一项

标签 delphi popup radio-group

我有 TPopup 菜单,其中设置了具有以下属性的 3 个项目。

AutoCheck = True
RadioItem = True

并且对于第一个菜单项,我也将 Checked 属性设置为 True,因此菜单至少有一个项目在最初显示时被选中。这一切都很好,但是如果我单击当前选中的项目,复选(点)就会消失,我想这样做以便始终选中弹出窗口中的至少 1 个项目。我该怎么做?

最佳答案

组中的项目也应该具有相同的非零 GroupIndex .这与 RadioItem 一起应该使项目表现得像一个 radio 组。

但是,似乎AutoCheck不遵守 GroupIndexRadioItem 属性,因为当您单击当前选中的项目时它会清除选中。 (可以说,这可以被认为是 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/

相关文章:

android - 将单选按钮分组

android - RadioButton 的自定义布局

c# - 为 COM Interop 构建 .NET DLL 时出现 "Access to the Registry Key Denied"

selenium - 如何使用 Mink、Selenium 2 和 Behat 与弹出窗口交互?

javascript - 如何执行按钮提交弹出一个窗口,其中包含指向其他站点的图像?

javascript - 在 iframe 中加载网站在 IE 中出现错误

extJS RadioGroup setValue()函数

delphi - 如何创建 IDWriteFontFile

delphi - IdHttpServer 表单标题未更新

delphi - 不会触发防病毒误报的软件保护/代码混淆