正如您在我的问题历史中所看到的,我正在开发一个电子书管理器,它将是开源的,我会在大约10天内发布它,但我有TRadioGroup
,你可以看到:
TRadioGroup Used On My Form http://img85.imageshack.us/img85/1830/radiogroup.png
我想将某些东西存储在一个变量(需要Integer
)中,该变量将与此TRadioGroup
“链接”。
我需要像这样执行if
函数:
TRadioButton的标题 - >需要存储在变量
中的数字适合2x宽度 - 默认 - > 0
适合2xHeight - > 1
适合宽度 - > 2
适合身高 - > 3
但我只使用了TRadioGroup
和TRadioButton
一次,与C#不同,我使用了20多次。然后我想知道我需要把什么放在if函数上,因为它会做什么我已经知道怎么做了:
var
num: Integer;
begin
if(TRadioButton1 checked?)
begin
num := 0;
end;
end.
我需要在if
函数的括号内添加什么内容?
PS:我将把这些学分放在帮助我完成这个小项目的人的计划中。
答案 0 :(得分:10)
TRadioButton具有Checked属性。但是TRadioGroup具有ItemIndex属性。
使用TStrings存储TRadioGroup中的项目。因此,您可以将对象与每个选项相关联,并且可以将整数转换为要存储的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语句是特殊的,因为它使您能够根据if条件执行不同的语句。
答案 1 :(得分:5)
稍微提示:设置.ItemIndex
不会将键盘焦点发送到收音机项目,我知道如何修复它,提前预读。
通过设置.ItemIndex
而不是通过代码选择RadioGroup中的Radio,通过将焦点发送到无线电项目来做得更好;只是非常清楚:我的意思是只关注收音机项目,而不是整个广播组。
而不是:radiogroup.itemindex:=TheIndex;
这样做:TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;
它将使广播项目被选中并将键盘焦点发送给它,因此它将显示它的虚线矩形,就像用户点击它一样。
注意1:要查看它的实际效果,请使用键盘光标键并比较仅设置.ItemIndex
和将焦点发送到广播项目的行为。
注意2:如果您使用TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;
,则根本不需要设置.ItemIndex
,也可以完成。
希望能帮助遇到与我相同问题的人,当需要通过代码设置时,例如避免圆形键盘行为,例如使其在选择最后一个收音机项目时保持最后一个收音机项目并且键盘正确按下光标,第一个相同。