我有一个带有2 RadioButtons
(具有相同 GroupName)的表单,我需要使用 LiveBindings 在字段状态中保存'A'
(如果选择 RadioButton1)或(如果选择 RadioButton2)。'I'
一个组件到一个字段很容易,但在这种情况下,我有两个组件从一个字段获取和设置值。
我创建了一个返回radiobutton
选择Groupname
并手动填充字段的函数,但我想要更自动的东西。
提前致谢!
我有一个带有2 RadioButtons
(具有相同 GroupName)的表单,我需要使用 LiveBindings 在字段状态中保存'A'
(如果选择 RadioButton1)或(如果选择 RadioButton2)。'I'
一个组件到一个字段很容易,但在这种情况下,我有两个组件从一个字段获取和设置值。
我创建了一个返回radiobutton
选择Groupname
并手动填充字段的函数,但我想要更自动的东西。
提前致谢!
以下是完成此操作的步骤。
RadioButton1
和RadioButton2
.Bindable Members
,然后选中复选框,IsChecked
然后单击确定按钮。IsChecked
属性和您希望绑定到的字段之间拖动一个链接(注意这可以是一个字符串字段)。现在您几乎要崩溃了,但是您需要将字符串转换为布尔值,以便该IsChecked
属性具有布尔值。为此,请从 LiveBindings 设计器中为您的单选按钮选择绑定链接。然后在其CustomFormat
属性中,分配以下字符串
IfThen(ToStr(%s)="Poor",True, False)
这将允许在基础数据库值为“差”时检查单选按钮
对其他单选按钮执行相同操作,但使用不同的字符串
IfThen(ToStr(%s)="Excellent",True, False)
现在要让单选按钮能够更改底层数据库字段,您需要附加代码来执行此操作。让我们使用单选按钮的OnClick
事件(附加到两个单选按钮)。此代码假定您的基础数据集已命名FDCustomer
,并且您的字段已命名Status
。请注意,在事件发生时尚未选中单选按钮,因此我们寻找为IsChecked
false。
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;