You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi DBGrid动态添加缓存值类lookup查找字段显示为空问题咨询

问题根源

出现下拉为空的核心原因是混用了Delphi的两种Lookup字段模式,同时存在多个错误配置:

  • 模式冲突:fkLookup是关联外部数据集的Lookup字段专用属性,当你需要用静态缓存的LookupList实现下拉时,不能设置FieldKind := fkLookup,保持默认的fkData即可
  • 冗余配置:LookupCache是外部数据集模式下用于缓存查询结果的属性,静态列表模式下不需要设置
  • 多余操作:你已经通过TStringField.Create直接创建了字段实例并绑定到数据集,后续调用p_StoredProc.FieldDefs.Add会覆盖你提前设置的Lookup相关属性,属于无效且有害的操作
  • 可选校验:确认你KeyFields指定的DateTypeID字段为整数类型,和你LookupList.Add的第一个参数(整数0/1/2/3/4)类型匹配,如果该字段是字符串类型,需要把Add的第一个参数改为字符串格式,例如LookupList.Add('0','')

修复后代码

with TStringField.Create(p_StoredProc) do
begin
  FieldName := 'MDateTypeID';
  DataSet := p_StoredProc;
  Name := DataSet.Name + FieldName;
  KeyFields := 'DateTypeID';

  Lookup := True;
  LookupList.Add(0,'');
  LookupList.Add(1,'ATA(B)');
  LookupList.Add(2,'Delivery Unloading');
  LookupList.Add(3,'Invoice Date');
  LookupList.Add(4,'Sales Date');
end;

内容的提问来源于stack exchange,提问作者Alex Delphi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:45:03