在TRadioGroup中选择了哪个单选按钮?

Nat*_*pos 7 delphi integer radio-group lazarus radio-button

正如你可以在我的问题的历史看,我正在开发一个电子图书管理员,这将是开源的,我会释放它在10天左右,但我有一个TRadioGroup,你可以看到:
TRadioGroup用在我的格式为:http: //img85.imageshack.us/img85/1830/radiogroup.png

而且我想将一些东西存储在一个变量(需要是一个Integer)中,并与之"链接" TRadioGroup.

我需要做这样的if功能:

TRadioButton的标题 - >需要存储在变量中的数字

适合2x宽度 - 默认 - > 0
适合2xHeight - > 1
适合宽度 - > 2
适合高度 - > 3

但我只是用一个TRadioGroupTRadioButton一个时间,比我以前用过的20倍以上C#不同.然后我想知道我需要把什么放在if函数上,因为它会做什么我已经知道怎么做了:

var
  num: Integer;

begin
  if(TRadioButton1 checked?)
  begin
    num := 0;
  end;
end.
Run Code Online (Sandbox Code Playgroud)

我需要把它放在if函数的括号内?

PS:我将把这些学分放在帮助我完成这个小项目的人的计划中.

Too*_*the 10

TRadioButton具有Checked属性.但是TRadioGroup具有ItemIndex属性.

TRadioGroup中的项目使用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;
Run Code Online (Sandbox Code Playgroud)

要阅读当前设置:

value := radiogroup.ItemIndex;
Run Code Online (Sandbox Code Playgroud)

或者获取关联的整数:

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

在您的情况下,值为0到3,因此您可以使用ItemIndex.

作为一个注释,如果不是一个功能.函数是一段代码,它根据输入参数返回一个值.If是一个语句,这是一个可以执行的命令.if语句是特殊的,因为它使您能够基于if条件执行不同的语句.


z66*_*66z 5

只是一点点提示:设置.ItemIndex不会将键盘焦点发送到收音机项目,我知道如何解决它,提前阅读.

而不是通过代码选择RadioGroup中的Radio,.ItemIndex通过将焦点发送到无线电项目来做得更好; 只是非常清楚:我的意思是只关注无线电项目,而不是整个无线电组.

代替: radiogroup.itemindex:=TheIndex;

这样做: TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;

它将使收音机项目被选中并将键盘焦点发送给它,因此它将显示它的虚线矩形,就像用户点击它一样.

注意1:要查看它的实际操作,请使用键盘光标键并比较设置.ItemIndex和发送焦点的行为与无线电项目.

注2:如果你使用TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;那么根本不需要设置.ItemIndex,它也将完成.

希望能帮助遇到与我相同问题的人,当需要通过代码设置时,例如避免圆形键盘行为,例如,当选择最后一个收音机项目并按下键盘右光标时使其保持在最后一个收音机项目上,首先相同.