【问题标题】:Why are do the buttons in my radio groups all behave like they're in one group?为什么我的单选组中的按钮都表现得像在一个组中一样?
【发布时间】:2012-06-21 07:41:59
【问题描述】:

在 Delphi 2010 中,我在一个表单上放置了 2 个单选组,然后为每个组添加了 2 个按钮。所以总共有4个按钮。

问题在于按钮的Checked 属性表现得好像所有4 个按钮都在同一个单选组中。即,在任何时候只能检查 4 个按钮中的 1 个。在设计和运行时都是如此。

  object RadioGroup1: TRadioGroup
    Left = 14
    Top = 314
    Width = 177
    Height = 35
    Caption = 'Series 2 Axis'
    TabOrder = 14
  end
  object RButtonLeftAxis: TRadioButton
    Left = 91
    Top = 326
    Width = 41
    Height = 17
    Caption = 'Left'
    TabOrder = 12
    OnClick = RButtonLeftAxisClick
  end
  object RButtonRightAxis: TRadioButton
    Left = 138
    Top = 326
    Width = 45
    Height = 17
    Caption = 'Right'
    Checked = True
    TabOrder = 13
    TabStop = True
    OnClick = RButtonRightAxisClick
  end

等等等等更多的对象

  object RadioGroup2: TRadioGroup
    Left = 8
    Top = 146
    Width = 113
    Height = 69
    Caption = 'Output Type'
    TabOrder = 33
  end
  object RadBtnkWh: TRadioButton
    Left = 20
    Top = 165
    Width = 65
    Height = 17
    Caption = 'kWh'
    TabOrder = 34
    OnClick = RadBtnkWhClick
  end
  object RadBtnLossFact: TRadioButton
    Left = 20
    Top = 188
    Width = 81
    Height = 17
    Caption = 'Loss Factors'
    TabOrder = 35
    OnClick = RadBtnLossFactClick
  end

如何解除这两个组的关联?

【问题讨论】:

  • 您应该将单选按钮放在 Group Box 中,而不是 RadioGroup 中。

标签: delphi radio-button


【解决方案1】:

您似乎已手动将单选按钮添加到 TRadioGroup。不要那样做。只需单击单选组的属性项并在其中写入字符串(各种单选按钮的名称)。你准备好一个广播组!

【讨论】:

  • 他似乎把它们放在了无线电组旁边,而不是完全在里面(用 DFM 术语,而不是视觉术语),他正在使用的无线电组,就像它们是斜面一样。 +1 帮助回答。
【解决方案2】:

你在某个地方被打脸了

您可以通过设置Items 属性将按钮添加到单选组。

您有两个 TRAdioGroups 和四个单选按钮,它们都有相同的父级,因此它们属于一个组。

所以摆脱按钮并正确使用无线电组。

或者去掉无线电组并将它们放在另一个容器中。

【讨论】:

    【解决方案3】:

    您的TRadioButton 控件就像它们在一个组中一样,因为它们在一个组中,因为它们具有相同的Parent - 即TRadioGroup.Parent TRadioGroup 控制自己。您实际上根本没有将按钮 IN 放在组中。您展示的 DFM 证明了这一点。您所做的只是将按钮 ON TOP OF 组而不是 INSIDE 组。

    TRadioGroup.ControlStyle 属性没有启用csAcceptsControls 标志,因此您不能在设计时将TRadioButton 控件放到TRadioGroup 上。这就是为什么TRadioGroup 没有变成按钮的Parent,而是TRadioGroup.Parent 变成了按钮的Parent。要将按钮 INSIDE 放在TRadioGroup 中,您需要改用TRadioGroup.Items 属性。但是,这并不能让您对按钮的位置进行任何控制。如果需要,您必须改用另一个容器,例如 TPanelTGroupBox,您可以将 TRadioButton 控件拖放到该容器上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-13
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 2015-04-21
      • 2017-07-19
      • 1970-01-01
      • 2011-01-22
      相关资源
      最近更新 更多