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

标签 delphi integer radio-button lazarus radio-group

正如您在我的问题历史记录中看到的,我正在开发一个电子书管理器,它将是开源的,我将在大约 10 天后发布它,但我有一个 TRadioGroup,如你可以看到:
TRadioGroup Used On My Form http://img85.imageshack.us/img85/1830/radiogroup.png

我想将一些东西存储在一个变量中(需要是一个整数),该变量将与这个TRadioGroup“链接”。

我需要执行一个 if 函数,如下所示:

Caption Of The TRadioButton -> Number that will need to be stored in the variable

Fit 2xWidth - Default -> 0
Fit 2xHeight -> 1
Fit Width -> 2
Fit Height -> 3

但我只使用了 TRadioGroupTRadioButton 一次,这与我在 C# 中使用过 20 多次不同。然后我想知道我需要在 if 函数上添加什么,因为它会做什么我已经知道该怎么做:

var
  num: Integer;

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

我需要在 if 函数的括号内放入什么?

PS:我将把积分归功于在这个小项目中帮助过我的人们。

最佳答案

TRadioButton 具有 Checked 属性。但 TRadioGroup 具有 ItemIndex 属性。

TRadioGroup 中的项目使用 TString 存储。因此,您可以将一个对象与每个选项关联起来,并且可以将一个整数转换为要存储的 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 语句很特殊,因为它使您能够根据 if 条件执行不同的语句。

关于delphi - 在 TRadioGroup 中选择了哪个单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1986246/

相关文章:

delphi - 如何在 Delphi 中做类似 C# Invoke() 的事情?

delphi - 从 Delphi7 迁移到 Delphi XE 或 2010 for Unicode?

Delphi运行时主题已启用,但未使用

java - int[] 和 Integer[] 数组 - 有什么区别?

mysql - 我应该在 MySQL 中使用哪种整数?

javascript - HTML 测验 - JavaScript 按钮(将结果变成绿色,假红色)

iphone - 单击上一个按钮后如何在单选按钮上保持选择

windows - 使用内存映射文件实现虚拟内存

c++ - 如何处理任意大的整数

html - JSP 中的单选按钮验证