确保TPopup菜单中至少有一个项目始终处于选中状态
-
12-12-2019 - |
题
我有TPopup菜单与3个项目设置与以下属性.
AutoCheck = True
RadioItem = True
对于第一个菜单项,我设置了 Checked
物业至 True
同样,菜单至少有一个项目与它选择最初显示。这一切都很好,但是如果我点击当前选择的项目,检查(点)就会消失,我想让它在弹出窗口中至少有1个项目在任何时候都被选中。我该怎么做呢?
解决方案
组中的项也应该具有相同的非零 GroupIndex
.这,连同 RadioItem
应该使项目表现得像一个无线电组。
然而,似乎 AutoCheck
不尊重 GroupIndex
和 RadioItem
属性,因为当您单击当前检查的项目时,它将清除检查。(可以说,这可以被认为是VCL中的一个错误。)
这里有一个解决方法:
套装 AutoCheck
到 False
, ,分配所有项目相同的非零 GroupIndex
和一个共同的 OnClick
处理程序来检查点击的项目,如下所示:
procedure TForm1.ItemClick(Sender: TObject);
begin
(Sender as TMenuItem).Checked := True;
end;
或使用 行动, ,与他们这似乎按预期工作。
其他提示
您可以将以下OnClick处理程序设置为所有无线电组菜单项:
procedure TForm1.MenuItemClickHandler(Sender: TObject);
begin
if Sender is TMenuItem then
begin
if not (Sender as TMenuItem).Checked then (Sender as TMenuItem).Checked:=True;
end;
end;
不隶属于 StackOverflow