TDBLookupCombobox
有人能帮我在TDBLookupCombobox中复制FireMonkey功能吗?
发布于 2012-04-19 09:16:54
我不知道是否有更好的解决办法,但我就是这样做的:
假设您有Table1和Table2的外键。
Text属性,并使用Table2的主键填充Tag属性。Selected.Tag匹配Table1.中的外键
编辑:
检查SourceComponent属性的TBindList和TBindPosition。
TBindList应该指向BindScopeDB of Table2。
相反,TBindPosition到了BindScopeDB of Table1。
ControlComponent应该同时指向您的TComboBox。
使用TBindList时,Format集合表达式引用ComboBox中的单个项,因为它循环到Table2中的每一行以填充控件。因此,ControlExpressions是每个项的属性:
Text,Tag
注意:您不需要Selected
这些SourceExpressions:
FieldByName(LookedUpField).AsString,FieldByName(PK).AsInteger
将这些表达式放在Format集合中。
相反,TBindPosition总是指整个ComboBox,因此您需要使用Selected。ControlExpressions:
Selected.Tag SelectedText(Self)
SourceExpressions:
FieldByName(FK).AsInteger,FieldByName(LookupField).AsString
请记住,PosSource集合用于设置"ControlExpressions to SourceExpressions“赋值,而PosControl包含"SourceExpressions TO ControlExpressions”赋值。
基本上,您需要两件事:当Table1光标更改时,更改所选项;当用户更改所选项时,使用所选项的标记属性设置FK。
因此,只需将这些放在您的PosControl集合中:
SelectedText(Self) ControlExpression
FieldByName(LookupField).AsString SourceExpression
这些在您的PosSource集合中:
Selected.Tag ControlExpression
FieldByName(FK).AsInteger SourceExpression
如果要进行类似的TDBLookupComboBox行为,则必须在更改所选的组合框项时将表置于编辑状态。
几个月前,当我尝试使用Fire猴子时,我需要更多的表达式来更新StringGrid中显示的相同字段,但我不知道是否有更好的解决方案。希望其他人能回答并分享他在这方面的经验。
要获得更多信息,请查看XE2中包含的示例。
希望这能帮点忙。
https://stackoverflow.com/questions/10211668
复制相似问题