gpt4 book ai didi

delphi - TDBLookupCombobox FireMonkey

转载 作者:行者123 更新时间:2023-12-02 02:31:02 25 4
gpt4 key购买 nike

TDBLookupCombobox

任何人都可以帮助我在 FireMonkey 中重现 TDBLookupCombobox 功能吗?

最佳答案

我不知道是否有更好的解决方案,但这就是我所做的:

假设您有表 1 和表 2 的外键。

  • 使用外键在 Table1 中创建查找字段。
  • 使用 TBindList 填充 Combobox 的 Text 属性在 Table2 中查找字段并用以下内容填充 Tag 属性表2的主键。
  • 使用 TBindPosition 将所选文本与查找字段和 Selected.Tag 以及表 1 中的外键。

编辑:

检查 TBindList 和 TBindPosition 的 SourceComponent 属性。

TBindList 应指向 Table2 的 BindScopeDB。

TBindPosition 改为 Table1 的 BindScopeDB。

ControlComponent 应该指向您的 TComboBox。

当您使用 TBindList 时,Format 集合表达式引用 ComboBox 内的单个项目,因为它会循环遍历 Table2 中的每一行来填充控件。所以 ControlExpressions 是每个项目的属性:

文本,标签

注意:您不需要Selected

以及这些 SourceExpressions:

FieldByName(LookedUpField).AsString,FieldByName(PK).AsInteger

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

TBindPosition 相反,始终引用整个 ComboBox,因此您需要使用 Selected。控制表达式:

选定的标签选定文本(自己)

源表达式:

FieldByName(FK).AsInteger,FieldByName(LookupField).AsString

请记住,PosSource 集合用于设置“ControlExpressions TO SourceExpressions”分配,而 PosControl 包含“SourceExpressions TO ControlExpressions”分配。

基本上,您需要两件事:当 Table1 光标更改时更改所选项目,并在用户更改时使用所选项目的 Tag 属性设置 FK。

所以只需将它们放入您的 PosControl 集合中即可:

SelectedText(Self) ControlExpression

FieldByName(LookupField).AsString SourceExpression

以及您的 PosSource 集合中的这些:

Selected.Tag ControlExpression

FieldByName(FK).AsInteger SourceExpression

如果您想实现与 TDBLookupComboBox 类似的行为,则必须在选定的组合框项更改时将表置于“编辑”状态。

当我几个月前尝试 Firemonkey 时,我需要更多表达式来更新 StringGrid 中显示的相同字段,但我不知道是否有更好的解决方案。希望其他人能够回答并分享他的经验。

有关更多信息,请查找 XE2 附带的示例。

希望这对您有所帮助。

关于delphi - TDBLookupCombobox FireMonkey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10211668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com