我有TPopup菜单与3个项目设置与以下属性.

AutoCheck = True
RadioItem = True

对于第一个菜单项,我设置了 Checked 物业至 True 同样,菜单至少有一个项目与它选择最初显示。这一切都很好,但是如果我点击当前选择的项目,检查(点)就会消失,我想让它在弹出窗口中至少有1个项目在任何时候都被选中。我该怎么做呢?

有帮助吗?

解决方案

组中的项也应该具有相同的非零 GroupIndex.这,连同 RadioItem 应该使项目表现得像一个无线电组。

然而,似乎 AutoCheck 不尊重 GroupIndexRadioItem 属性,因为当您单击当前检查的项目时,它将清除检查。(可以说,这可以被认为是VCL中的一个错误。)

这里有一个解决方法:

套装 AutoCheckFalse, ,分配所有项目相同的非零 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;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top