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

遍历cxGrid时如何读取TcxLookupComboBox的值?

读取cxGrid中TcxLookupComboBox列值的循环代码

方法1:通过cxGrid的DataController遍历行

这种方式直接操作Grid的行数据,适合未直接操作绑定DataSet的场景:

var
  I: Integer;
  LookupColumn: TcxGridColumn;
  DisplayValue: string;
  KeyValue: Variant;
begin
  // 指定目标Lookup列(替换成你的列名或列索引)
  LookupColumn := cxGrid1TableView1.Columns['LookupColumnName']; // 或用索引:Columns[0]

  // 遍历Grid的所有行
  for I := 0 to cxGrid1TableView1.DataController.RecordCount - 1 do
  begin
    // 获取Lookup下拉框的显示文本
    DisplayValue := cxGrid1TableView1.DataController.DisplayTexts[I, LookupColumn.Index];
    // 获取Lookup对应的实际存储键值
    KeyValue := cxGrid1TableView1.DataController.Values[I, LookupColumn.Index];

    // 处理获取到的值,示例:输出到调试窗口
    OutputDebugString(PChar(Format('行%d: 显示值=%s, 键值=%s', [I+1, DisplayValue, VarToStr(KeyValue)])));
  end;
end;

方法2:通过绑定的DataSet遍历(更高效)

如果cxGrid绑定了TDataSet(如TClientDataSet、TADODataSet),直接遍历DataSet更简洁:

var
  LookupField: TField;
begin
  // 获取绑定的Lookup字段(替换成你的字段名)
  LookupField := cxGrid1TableView1.DataController.DataSet.FieldByName('LookupFieldName');

  // 遍历DataSet所有记录
  cxGrid1TableView1.DataController.DataSet.First;
  while not cxGrid1TableView1.DataController.DataSet.Eof do
  begin
    // 获取显示文本
    ShowMessage('显示值: ' + LookupField.DisplayText);
    // 获取实际存储的键值
    ShowMessage('键值: ' + VarToStr(LookupField.Value));

    cxGrid1TableView1.DataController.DataSet.Next;
  end;
end;

注意事项

  • 替换代码中的cxGrid1TableView1、LookupColumnName、LookupFieldName为你实际的组件和字段名称
  • DisplayValue/DisplayText是Lookup下拉框展示的内容,KeyValue/Value是对应绑定的后台存储值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:34:53