Delphi(FMX) 具有多个单选按钮的实时绑定
Delphi(FMX) Livebindings with Multiple RadioButtons
我有一个带有 2 RadioButtons
(具有相同组名)的表单,我需要在使用 LiveBindings 字段状态。
一个组件到一个字段很容易,但在这种情况下,我有两个组件从一个字段获取和设置值。
我创建了一个函数,returns radiobutton
通过 Groupname
选择并手动填写字段,但我想要更自动化的东西。
在此先致谢!
以下是完成此操作的步骤。
- 创建您的两个 RadioButton,将其命名为
RadioButton1
和 RadioButton2
。
- 将两个单选按钮的 GroupName 属性 设置为相同的字符串。
- 右键单击您的第一个单选按钮并select绑定视觉...
- 在 LiveBindings 设计器中,右键单击您的单选按钮和 select
Bindable Members
,然后 select 复选框 IsChecked
,然后单击确定按钮。
- 仍在实时绑定设计器中,现在在
IsChecked
属性 和您希望绑定的字段之间拖动一个 link(请注意,这可以是字符串字段)。
- 对另一个单选按钮重复步骤 4 和 5。
现在你快崩溃了,但你需要将字符串转换为布尔值,这样 IsChecked
属性 就会有一个布尔值。为此,select 来自 LiveBindings Designer 的绑定 link 用于您的单选按钮。然后在其CustomFormat
属性中赋值如下字符串
IfThen(ToStr(%s)="Poor",True, False)
这将允许在基础数据库值为 'Poor'
时检查单选按钮
除了使用不同的字符串外,对其他单选按钮执行相同的操作
IfThen(ToStr(%s)="Excellent",True, False)
现在要让单选按钮能够更改基础数据库字段,您需要附加代码来执行此操作。让我们使用单选按钮的 OnClick
事件(附加到两个单选按钮)。此代码假定您的基础数据集名为 FDCustomer
,并且您的字段名为 Status
。请注意,事件发生时单选按钮尚未选中,因此我们寻找 IsChecked
为假。
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;
我有一个带有 2 RadioButtons
(具有相同组名)的表单,我需要在使用 LiveBindings 字段状态。
一个组件到一个字段很容易,但在这种情况下,我有两个组件从一个字段获取和设置值。
我创建了一个函数,returns radiobutton
通过 Groupname
选择并手动填写字段,但我想要更自动化的东西。
在此先致谢!
以下是完成此操作的步骤。
- 创建您的两个 RadioButton,将其命名为
RadioButton1
和RadioButton2
。 - 将两个单选按钮的 GroupName 属性 设置为相同的字符串。
- 右键单击您的第一个单选按钮并select绑定视觉...
- 在 LiveBindings 设计器中,右键单击您的单选按钮和 select
Bindable Members
,然后 select 复选框IsChecked
,然后单击确定按钮。 - 仍在实时绑定设计器中,现在在
IsChecked
属性 和您希望绑定的字段之间拖动一个 link(请注意,这可以是字符串字段)。 - 对另一个单选按钮重复步骤 4 和 5。
现在你快崩溃了,但你需要将字符串转换为布尔值,这样 IsChecked
属性 就会有一个布尔值。为此,select 来自 LiveBindings Designer 的绑定 link 用于您的单选按钮。然后在其CustomFormat
属性中赋值如下字符串
IfThen(ToStr(%s)="Poor",True, False)
这将允许在基础数据库值为 'Poor'
时检查单选按钮除了使用不同的字符串外,对其他单选按钮执行相同的操作
IfThen(ToStr(%s)="Excellent",True, False)
现在要让单选按钮能够更改基础数据库字段,您需要附加代码来执行此操作。让我们使用单选按钮的 OnClick
事件(附加到两个单选按钮)。此代码假定您的基础数据集名为 FDCustomer
,并且您的字段名为 Status
。请注意,事件发生时单选按钮尚未选中,因此我们寻找 IsChecked
为假。
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;