我想将焦点设置在Tdbgridview上的特定行上。 首先,我从组合框中选择条件字段(搜索ex:FisrtName关注的列),然后在TeditField中键入条件(例如:Jack)。 那么Dbgrifd的箭头应该指向相关的行。 我应该怎么做? 感谢。
答案 0 :(得分:4)
TDBGrid
组件(以及所有其他TDBxxx
组件)是Delphi定义为数据软件组件的组件。这种组件作为数据集的可视化表达式存在。
所以,在TDBGrid
中你不应该考虑聚焦网格的一行,而是考虑定位一行网格的数据集(例如,使用TLama建议的Locate
方法)。网格将注意到其数据集的当前行已更改(因为网格了解有关数据集的条件)并将聚焦相应的行。
更新1
下面你可以看到我所说的一个例子:
MyDataset.Locate('Id', 123, []);
上面的代码只是在名为MyDataset
的数据集中查找某条记录。第一个参数是数据集中现有字段的名称。因此,您有一个包含某些字段的数据集,其中一个字段名为Id
。第二个参数是所需行中该字段中包含的值,第三个参数是此处不适用的一些选项。有关Locate
方法的详细信息,请转到Delphi docwiki。
换句话说,我们正在寻找一个字段Id
的值为123的行!如果数据集可以找到这样的行,它将成为当前记录(或行)。如果TDBGrid
与TDataSource
连接TMyDataset
,它会自动更新以选择相应的行,就像您想要的那样。