当前位置:首页 > 技术 > 正文内容

TcxGrid 常用属性与操作方法详解

访客 技术 2026年6月16日 1

获取当前行与列信息

在使用 TcxGrid 时,可通过以下属性获取焦点位置的相关数据:

  • TableView.Controller.FocusedRowIndex:返回当前选中行的索引(从0开始)。
  • TableView.Controller.FocusedRow:获取当前聚焦的行对象。
  • TableView.Controller.FocusedColumn:获取当前聚焦的列对象。
  • TableView.Controller.FocusedColumnIndex:返回当前列的索引值。
  • TableView.Controller.EditingItem:返回正在编辑的单元格项。
  • TableView.Controller.EditingController.Edit:访问当前激活的编辑控件实例。

读取单元格值(区分编辑状态)

根据是否处于编辑模式,应采用不同方式获取单元格内容:

if cxGrid1DBTableView1.Controller.FocusedColumn.Editing then
  ShowMessage(cxGrid1DBTableView1.Controller.EditingController.Edit.EditingValue)
else
  ShowMessage(cxGrid1DBTableView1.DataController.Values[
    cxGrid1DBTableView1.DataController.FocusedRecordIndex,
    cxGrid1DBTableView1.Controller.FocusedItemIndex]);

通过 CellClick 事件获取点击单元格的值

利用 OnCellClick 事件捕获用户点击行为,并提取对应单元格的数据:

procedure TForm1.cxGrid1DBTableView1CellClick(
  Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo;
  AButton: TMouseButton;
  AShift: TShiftState;
  var AHandled: Boolean);
var
  ValueData: Variant;
begin
  ValueData := ACellViewInfo.Value;
  Clipboard.AsText := VarToStr(ValueData); // 自动复制到剪贴板
end;

访问指定行列的数据值

可通过索引直接读取某行某列的值:

// 获取当前选中列的索引
ColIndex := cxGrid1DBBandedTableView1.Controller.FocusedColumn.Index;

// 取得第一个选中行在该列的值
RowIdx := cxGrid1DBBandedTableView1.Controller.SelectedRows[0].RecordIndex;
CellValue := cxGrid1DBBandedTableView1.DataController.GetValue(RowIdx, ColIndex);

// 或使用简写语法
Value := cxGrid1DBTableView1.DataController.Values[RowIdx, ColIndex];

设置焦点到特定列

可编程方式将输入焦点移至某一列:

cxGrid1DBTableView1.Columns[5].FocusWithSelection;   // 聚焦并选中
cxGrid1DBTableView1.Columns[4].Focused := True;      // 仅设为焦点

统计与遍历选中行

获取当前选中的行数及每行数据:

// 获取选中行总数
SelectedCount := dgtv1.DataController.GetSelectedCount;

// 遍历所有选中行并输出第一列值
for I := 0 to SelectedCount - 1 do
begin
  RowIndex := dgtv1.DataController.GetSelectedRowIndex(I);
  ShowMessage(VarToStr(dgtv1.DataController.GetValue(RowIndex, 0)));
end;

获取排序条件构建 SQL ORDER BY 子句

动态读取表格当前排序规则:

const
  SortOrderStr: array[soNone..soDescending] of string = ('None', 'ASC', 'DESC');

var
  S, OrderClause: string;
  I: Integer;
begin
  OrderClause := '';
  for I := 0 to dgtv1.SortedItemCount - 1 do
  begin
    if OrderClause <> '' then
      OrderClause := OrderClause + ', ';

    OrderClause := OrderClause +
      dgtv1.SortedItems[I].DataBinding.DefaultCaption + ' ' +
      SortOrderStr[TcxDataSortOrder(dgtv1.SortedItems[I].SortOrder)];
  end;

  if OrderClause <> '' then
    ShowMessage('ORDER BY ' + OrderClause);
end;

多选状态下定位数据集记录

结合数据集(如 ADOQuery)跳转到每个选中行对应的位置:

for i := 0 to cxGrid1.SelectedRows.Count - 1 do
begin
  cxGrid1.DataSource.DataSet.GotoBookmark(
    Pointer(cxGrid1.SelectedRows.Items[i])
  );
end;

结合数据集字段获取完整行信息

在循环选中行的同时访问原始数据字段:

with cxGrid1DBTableView1.Controller do
begin
  for i := 0 to SelectedRowCount - 1 do
  begin
    SelectedRows[i].Focused := True;
    ShowMessage(ADOQuery1.FieldByName('mc').AsString);
  end;
end;

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。