遍历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
相关产品推荐
相关产品推荐

