子菜单选择的时候前面打钩,而且一次只能选择一个子菜单!
是那个属性呢?

解决方案 »

  1.   

    菜单项是否打勾,是Checked属性,Checked=True为打勾状态,Checked=False为取消状态
      

  2.   

    Checked打钩,每次一个,那得你自己去写代码
      

  3.   

    procedure TCanMainForm.PCI9810Click(Sender: TObject);
    begin
      PCI9810.Checked:=True;
    end;
    为什么我这样无效呢,是不是对子菜单的宽度有要求啊
      

  4.   

    哪位大哥发个DEMO给我就很简单的就行,[email protected]谢谢了
      

  5.   

    是不是要把 AutoCheck 先设置为true啊?
    多试试就好了
      

  6.   

    “一次只能选择一个子菜单”这一项可以这样做:将需要的子菜单的GroupIndex设置为同一个非0值,并且将这些子菜单的RadioItem全部设置为True,这样将这些子菜单的OnClick事件这样写:
    begin
    (Sender as TMenuItem).Checked:=true;
    end;
    就可以选择一项,并且其它选项自动取消。但是综合起楼主的另外一个要求“子菜单选择的时候前面打钩”,这就不好办了:打勾属性是Checked,它对于相同组的菜单无效,而“一次只能选择一个子菜单”是RadioItem属性,它表现在界面上是菜单前面有个小圆点,而不是√。所以楼主的综合要求是直接通过设置属性实现不了的,如果要实现,只能通过代码实现:(前提是这些菜单设置RadioItem属性为False,并且设置GroupIndex属性为不为零的同一值)
    var
      Idx:Integer;
      i:integer;
    begin
      //记录本菜单的分组值
      Idx:=(Sender as TMenuItem).GroupIndex;
      //取消同组的其它菜单项的选择状态
      for i:=0 to MainMenu1.Items.Count-1 do
      begin
        if ((MainMenu1.Items[i].GroupIndex=Idx) and
            (MainMenu1.Items[i]<> (Sender as TMenuItem))) then
        begin
          MainMenu1.Items[i].Checked:=False;
        end;
      end;
      //将用户点击的菜单打勾
      (Sender as TMenuItem).Checked:=True;
      

  7.   

    这样子, autocheck:=True;
            RadioItems:=True;
            然后根据radio后的items来标记   
      

  8.   

    感谢wooden954和jiap723
    谢谢wooden954的代码,我又学到了很多呵呵
    我重新建个菜单就好了。
      

  9.   

    给你邮箱发了一个Demo,看看吧!别忘结帖哟!