procedure TForm2.Button1Click(Sender: TObject);
begin
cxGrid1TableView1.DataController.RecordCount := 2;
var
APeriodIndex, ADistanceIndex, AOrbitsIndex, ANameIndex: Integer;
//...
//Indexes to access values in particular columns
APeriodIndex := 0;
ADistanceIndex := 1;
ANameIndex := 2;
AOrbitsIndex := 3;
with cxGrid1TableView1.DataController do
begin
BeginUpdate;
try
//the first record
Values[0, APeriodIndex] := 87;
Values[0, ADistanceIndex] := 57910;
Values[0, ANameIndex] := 'Mercury';
Values[0, AOrbitsIndex] := 'Sun';
//the second record
Values[1, APeriodIndex] := 365;
Values[1, ADistanceIndex] := 149600;
Values[1, ANameIndex] := 'Earth';
Values[1, AOrbitsIndex] := 'Sun';
finally
EndUpdate;
end;
end;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Memo1.Lines.Add('FocusedRecordIndex:' + cxGrid1TableView1.DataController.FocusedRecordIndex.ToString);
Memo1.Lines.Add('FocusedDataRowIndex:' + cxGrid1TableView1.DataController.FocusedDataRowIndex.ToString);
Memo1.Lines.Add('FocusedRowIndex:' + cxGrid1TableView1.DataController.FocusedRowIndex.ToString);
Memo1.Lines.Add('-------------------');
end;
在 Delphi 的 Developer Express cxGrid 组件中,FocusedRecordIndex
、FocusedDataRowIndex
和 FocusedRowIndex
是用于访问和操作表格中当前聚焦(或高亮)行的不同方面的属性。这些属性虽然听起来相似,但它们有不同的用途和含义。以下是一个表格,展示了这些属性之间的区别:
属性名称 | 描述 | 用途 |
---|---|---|
FocusedRecordIndex |
表示当前聚焦记录在数据集(如 TDataSet)中的索引。 | 当你需要根据数据集中的记录索引来执行操作时非常有用。 |
FocusedDataRowIndex |
表示当前聚焦行在 cxGrid 内部数据行集合中的索引。这个索引是基于 cxGrid 视图(TcxGridTableView)的行集合。 | 当你需要在 cxGrid 的行集合中直接定位或操作行时非常有用。注意,这个索引可能不对应于数据集中的实际记录索引,特别是在使用分组、排序或过滤时。 |
FocusedRowIndex |
表示当前聚焦行在 cxGrid 视图(TcxGridTableView)中的可视行索引。这个索引考虑了所有可视行,包括数据行、组行、摘要行等。 | 当你需要获取或操作 cxGrid 中当前可视行的位置时非常有用。这个索引通常用于视图级别的操作,如滚动、选择等。 |
以下是一些使用这些属性的示例场景:
-
FocusedRecordIndex
:假设你有一个数据集,其中包含多个记录,并且你想要根据当前聚焦的记录索引来更新或删除该记录。你可以使用FocusedRecordIndex
来获取这个索引,并据此操作数据集。 -
FocusedDataRowIndex
:假设你在 cxGrid 中对行进行了分组或排序,并且你想要获取当前聚焦行在分组或排序后的行集合中的位置。你可以使用FocusedDataRowIndex
来获取这个索引,并据此在 cxGrid 的行集合中定位或操作行。 -
FocusedRowIndex
:假设你想要实现一个功能,当用户按下某个快捷键时,cxGrid 会滚动到当前聚焦行的位置。你可以使用FocusedRowIndex
来获取当前聚焦行的可视索引,并据此控制 cxGrid 的滚动行为。
可见使用 FocusedRecordIndex 最好,因为 values 取值和 赋值也是 按这个来的,这个也不受界面排序的影响,是一开始就固定死的,没事那么多事,尤其不要混用;
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/18422072