首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TDBLookupCombobox FireMonkey

TDBLookupCombobox FireMonkey
EN

Stack Overflow用户
提问于 2012-04-18 14:34:51
回答 1查看 4.1K关注 0票数 2

TDBLookupCombobox

有人能帮我在TDBLookupCombobox中复制FireMonkey功能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-19 09:16:54

我不知道是否有更好的解决办法,但我就是这样做的:

假设您有Table1和Table2的外键。

  • 使用外键在Table1中生成查找字段,
  • 使用TBindList来使用Table2中的查找字段填充组合框的Text属性,并使用Table2的主键填充Tag属性。
  • 使用TBindPosition将选定文本与查找字段匹配,使用Selected.Tag匹配Table1.

中的外键

编辑:

检查SourceComponent属性的TBindList和TBindPosition。

TBindList应该指向BindScopeDB of Table2。

相反,TBindPosition到了BindScopeDB of Table1。

ControlComponent应该同时指向您的TComboBox。

使用TBindList时,Format集合表达式引用ComboBox中的单个项,因为它循环到Table2中的每一行以填充控件。因此,ControlExpressions是每个项的属性:

TextTag

注意:您不需要Selected

这些SourceExpressions:

FieldByName(LookedUpField).AsStringFieldByName(PK).AsInteger

将这些表达式放在Format集合中。

相反,TBindPosition总是指整个ComboBox,因此您需要使用Selected。ControlExpressions:

Selected.Tag SelectedText(Self)

SourceExpressions:

FieldByName(FK).AsIntegerFieldByName(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中包含的示例。

希望这能帮点忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10211668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档