博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cxGrid 知识点
阅读量:4972 次
发布时间:2019-06-12

本文共 2377 字,大约阅读时间需要 7 分钟。

  • cxGrid 知识点

    • 设置 TableView.OptionsView.HeaderAutoHeight 为 True 时栏目标题高度自动调整
    • 网格上选择了记录,当焦点移走时,看不到选择的记录,解决办法:修改 TableView 的属性,OptionsSelection->HideSelection 设为 False
    • 遍历选中记录:
      with ATableView.DataController do
      begin
      VOldFocusedRecordIndex := FocusedRecordIndex;

       

      for VIndex := 0 to ATableView.Controller.SelectedRowCount - 1 do
      begin
      FocusedRecordIndex := ATableView.Controller.SelectedRows[VIndex].RecordIndex;
      AQry.UpdateObject.ExecSQL(ukInsert);
      end;

      FocusedRecordIndex := VOldFocusedRecordIndex;
      end;

    • 遍历当前视图所有记录:
      with ATableView.DataController do
      begin
      VOldFocusedRecordIndex := FocusedRecordIndex;

       

      for VIndex := 0 to FilteredRecordCount - 1 do
      begin
      FocusedRecordIndex := FilteredRecordIndex[VIndex];
      AQry.UpdateObject.ExecSQL(ukInsert);
      end;

      FocusedRecordIndex := VOldFocusedRecordIndex;
      end;

    • 调用 TableView 的 DataController.Groups.FullExpand 方法展开所有节点
    • 在使用自定义数据源,删除记录时,先 BeginUpdate,处理完后再 EndUpdate,否则会偶尔抛出索引超出范围:
      tvProducePlan.BeginUpdate;
      try
      FCustomDataSource.DeleteSelectedRecord(GetSelectedIds);
      finally
      tvProducePlan.EndUpdate;
      end;
    • 获取选中记录某列的值:
      function TMainForm.GetSelectedIds: TStringArray;
      var
      VIndex: Integer;
      begin
      SetLength(Result, tvProducePlan.Controller.SelectedRowCount);
      for VIndex := 0 to tvProducePlan.Controller.SelectedRowCount - 1 do
      Result[VIndex]:= tvProducePlan.DataController.Values[tvProducePlan.Controller.SelectedRecords[VIndex].RecordIndex, 0];
      end;
    • 根据某网格的数据定位另一个网格:
      procedure TMainForm.LinkFocusRecord(AParentColumn, AChildColumn: TcxGridColumn; AParentGrid, AChildGrid: TcxGridTableView);
      var
      VIndex: Integer;
      VValue: STring;
      FocusedRecord: TcxGridFocusedRecordChangedEvent;
      begin
      FocusedRecord:= AParentGrid.OnFocusedRecordChanged;
      AParentGrid.OnFocusedRecordChanged := nil;
      try
      with AChildGrid.DataController do
      begin
      VValue := GetDisplayText(FocusedRecordIndex, AChildColumn.Index);
      end;

       

      VIndex := AParentGrid.DataController.FindRecordIndexByText(0, AParentColumn.Index, VValue, False, False, True);

      if VIndex < 0 then
      begin
      AParentGrid.DataController.ClearSelection;
      Exit;
      end;

      AParentGrid.DataController.FocusedRecordIndex := VIndex;
      AParentGrid.DataController.SyncSelectionFocusedRecord;
      finally
      AParentGrid.OnFocusedRecordChanged := FocusedRecord;
      end;
      end;

    • TableView 的 FocusedRecordChanged 事件表示当前聚焦记录改变
    • 使用 TcxGridTableView.Controller 的 TopRowIndex、LeftPos 获取或设置当前可见视图顶部行号、左边位置

转载于:https://www.cnblogs.com/m0488/archive/2013/05/28/3104216.html

你可能感兴趣的文章
用队列和链表的方式解决约瑟夫问题
查看>>
python 迭代器与生成器
查看>>
基于ASP.NET WEB API实现分布式数据访问中间层(提供对数据库的CRUD)
查看>>
[django实践]投票app
查看>>
[django]form的content-type(mime)
查看>>
JQUERY —— 绑定事件
查看>>
在TabControl中的TabPage选项卡中添加Form窗体
查看>>
oracle中SET DEFINE意思
查看>>
个人作业-最长英语链
查看>>
JMeter-性能测试之报表设定的注意事项
查看>>
1066-堆排序
查看>>
仿面包旅行个人中心下拉顶部背景放大高斯模糊效果
查看>>
强大的css3
查看>>
[Luogu] 引水入城
查看>>
放张图片试试
查看>>
【WEB】高并发Web服务的演变-节约系统内存和CPU
查看>>
逻辑漏洞挖掘方式
查看>>
Servlet 编写过滤器
查看>>
Redis 数据类型
查看>>
Console-算法-回文数
查看>>