Как установить две радиокнопки в одной группе и две в другой группе?



У меня есть всего 4 радиокнопки на моей форме, я хочу установить первые две кнопки в одной группе и вторые две в другой группе, чтобы я мог проверить одну из первой группы и одну из второй группы.



Прямо сейчас, если я проверяю один из первой группы,то один из второй группы становится непроверенным.



Мне всегда было интересно, как это сделать, и я считаю, что сейчас самое время это выяснить. :)
592   5  

5 ответов:

Цитата из справки trusted Delphi 5:

По умолчанию все переключатели, которые непосредственно содержатся в одном оконном контейнере управления, например TRadioGroup или TPanel, сгруппированы. Например, две переключатели на форме могут быть проверены одновременно только в том случае, если они содержатся в отдельных контейнерах, таких как два разных групповых поля.

Поместите две кнопки на одну панель, а две другие-на другую панель. Таким образом, они будут рассматриваться как отдельные группы. Измените скосы панели, чтобы удалить край, и четыре кнопки не будут выглядеть для пользователя, как будто они разделены, если это то, что вам нужно.

RadioButton не имеет свойства GroupIndex, как это делает SpeedButton.

Было бы намного проще, если бы это было так, потому что вы могли бы использовать числа для создания наборов радиокнопок, которые взаимодействуют только с теми же номерами, установленными в GroupIndex.

Таким образом, все, что вы можете сделать, это разместить их внутри элемента управления группировкой, например панели.

Но вы всегда можете построить свою собственную версию Радиобуттона с различными новыми свойствами. :)

Именно поэтому мы используем Groupbox и Radiogroups (можно найти в стандартных элементах управления). Я рекомендую вам создать 2 групповых ящика и поместить в каждый по 2 радиокнопки. Затем вы сможете проверить 2 радиокнопки.

Вы также можете выбрать заголовок для группового поля. Это очень хороший способ организовать вашу анкету

Это здорово, когда переключатели одной и той же группы могут быть в строках или кольцах, но что делать, если переключатели должны быть показаны в стиле X (или более сложным способом):

 A B
 C D

Ограничения для этого образца стиля X я поставил:

  • A имеет отношение к D (A и D не могут быть проверены одновременно, проверка одного снимает другой)
  • C имеет отношение к B (C и B не могут быть проверены одновременно, проверка одного снимает другой)

Визуально требуется как то, в Стиль X, поэтому я не могу поместить любой GroupBox, который содержит этот RadioButton, так как GroupBox прямоугольный, а не диагональный.

Я не знаю никаких исправлений только с использованием стандартных компонентов, среди которых есть хак, чтобы сделать панели визуально прозрачными, а также щелкнуть по ним, так что обе панели представляют собой квадрат, один над другим.

Но как насчет того, чтобы иметь переключатели очень далеко друг от друга, с большим количеством сложных компонентов, панелей потока, записок и т. д.?

Единственный вариант-использовать третью компоненты партии (наконец-то до того, что я знаю) или сделать много тяжелой работы:

  1. Создайте панель для каждого Радиобуттона с точно таким же размером и положением, что и Радиобуттон; это делает переключатель не снимать флажок с любого другого, поэтому требуется больше кода.
  2. Добавьте код для каждого Радиобуттона, поэтому, когда он будет проверен, выполните снятие флажка на всех связанных с ним (тех, которые не должны быть проверены одновременно).

Слишком много работы для того, что могло бы быть реализовано на простом свойстве, таком как RadioGroupIndex, если присвоено значение 0, то работать так, как они работают сейчас, иначе снимите флажок только для той же группы... как в главном меню.

Comments

    Ничего не найдено.