1

我有一个带有2 RadioButtons(具有相同 GroupName)的表单,我需要使用 LiveBindings 在字段状态中保存'A'(如果选择 RadioButton1)或(如果选择 RadioButton2)。'I'

一个组件到一个字段很容易,但在这种情况下,我有两个组件从一个字段获取和设置值。

我创建了一个返回radiobutton选择Groupname并手动填充字段的函数,但我想要更自动的东西。

提前致谢!

4

1 回答 1

2

以下是完成此操作的步骤。

  1. 创建你的两个 RadioButtons,调用它RadioButton1RadioButton2.
  2. 将两个单选按钮的 GroupName 属性设置为相同的字符串。
  3. 右键单击您的第一个单选按钮并选择 Bind Visually...
  4. 在 LiveBindings 设计器中,右键单击单选按钮并选择Bindable Members,然后选中复选框,IsChecked然后单击确定按钮。
  5. 仍然在 Live Bindings 设计器中,现在在IsChecked属性和您希望绑定到的字段之间拖动一个链接(注意这可以是一个字符串字段)。
  6. 对另一个单选按钮重复步骤 4 和 5。

现在您几乎要崩溃了,但是您需要将字符串转换为布尔值,以便该IsChecked属性具有布尔值。为此,请从 LiveBindings 设计器中为您的单选按钮选择绑定链接。然后在其CustomFormat属性中,分配以下字符串

IfThen(ToStr(%s)="Poor",True, False)

这将允许在基础数据库值为“差”时检查单选按钮

对其他单选按钮执行相同操作,但使用不同的字符串

IfThen(ToStr(%s)="Excellent",True, False)

现在要让单选按钮能够更改底层数据库字段,您需要附加代码来执行此操作。让我们使用单选按钮的OnClick事件(附加到两个单选按钮)。此代码假定您的基础数据集已命名FDCustomer,并且您的字段已命名Status。请注意,在事件发生时尚未选中单选按钮,因此我们寻找为IsCheckedfalse。

if Sender = RadioButton1 then
begin
   if not TRadioButton(Sender).IsChecked then // checking
   begin
     fdcustomer.Edit;
     fdcustomer.FieldByName('Status').AsString:= 'Poor';
   end;
end
else if Sender = RadioButton2 then
begin
   if not TRadioButton(Sender).IsChecked then
   begin
     fdcustomer.Edit;
     fdcustomer.FieldByName('Status').AsString:= 'Excellent';
   end;
end;
于 2016-04-03T22:59:25.957 回答