Какая радиопроизводительная кнопка выбрана в традиционной группе?

StackOverflow https://stackoverflow.com/questions/1986246

Вопрос

Как вы можете видеть в истории моих вопросов, я разрабатываю менеджера по электронным книгам, который будет открытым исходным кодом, и я выпущу его примерно через 10 дней, но у меня есть TRadioGroup, как вы видете:
Tradiogroup, используемая в моей форме http://img85.imageshack.us/img85/1830/radiogroup.png

И я хочу сохранить что -нибудь в переменной (которая должна быть Integer) это будет "связано" с этим TRadioGroup.

Мне нужно сделать if функционируйте так:

Подпись числа TradioButton ->, которое необходимо будет хранить в переменной

Fit 2xWidth - по умолчанию -> 0
Fit 2xHeight -> 1
Ширина подходит -> 2
Высота подходит -> 3

Но я только что использовал TRadioGroup и TRadioButton Однажды, отличный от C#, который я использовал более 20 раз. Тогда я хочу знать, что мне нужно внести на функцию, потому что то, что она сделает, я уже знаю, как сделать:

var
  num: Integer;

begin
  if(TRadioButton1 checked?)
  begin
    num := 0;
  end;
end.

Что мне нужно положить в скобки if функция?

PS: Я собираюсь поместить кредиты на программу для людей, которые помогли мне в этом маленьком проекте.

Это было полезно?

Решение

TradioButton имеет проверенную собственность. Но у традиографии есть свойство itemindex.

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

Пример:

// fill the radiogroup
radiogroup.Items.AddObject('Fit 2xWidth', TObject(0));
radiogroup.Items.AddObject('Fit 2xHeight', TObject(1));
radiogroup.Items.AddObject('Fit Width', TObject(2));
radiogroup.Items.AddObject('Fit Height', TObject(3));
radiogroup.ItemIndex := 0;

Чтобы прочитать текущую настройку:

value := radiogroup.ItemIndex;

Или получить связанное целое число:

index := radiogroup.ItemIndex;
Assert(index>=0); // Sanity check
value := Integer(radiogroup.Items.Objects[index]);

В вашем случае значения составляют от 0 до 3, поэтому вы можете использовать itemindex.

Как примечание, если не функция. Функция - это часть кода, которая возвращает значение на основе входных параметров. Если является оператором, которая является командой, которая может быть выполнена. Оператор IF является особенным, потому что он позволяет вам выполнять другой оператор на основе условия IF.

Другие советы

Просто небольшой совет: настройка .ItemIndex Не отправляю фокус клавиатуры на радиосвязь, я знаю, как его исправить, прочитать заранее.

Вместо того, чтобы выбрать код радио в радиограмме, настройка .ItemIndex Гораздо лучше сделать это, отправив фокус на радиосвязь; Просто чтобы быть очень ясным: я имею в виду посылать фокус только на радиопередачу, а не всю радиополучающую группу.

Вместо: radiogroup.itemindex:=TheIndex;

Сделай это как это: TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;

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

ПРИМЕЧАНИЕ1: чтобы увидеть его в действии, используйте клавиши курсора клавиатуры и сравните Behavor of Just Setting .ItemIndex и отправка фокуса на радио.

Примечание2: если вы используете TRadioButton(radiogroup.Controls[TheIndex]).SetFocus; тогда нет необходимости устанавливать .ItemIndex Вообще, это также будет сделано.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top