如何在TDBgrid Delphi中对特定行设置焦点

如何在TDBgrid Delphi中对特定行设置焦点,delphi,gridview,Delphi,Gridview,我想将焦点设置在Tdbgridview上的特定行上。 首先,我从组合框中选择criteria字段(search ex:FisrtName涉及的列),然后在TeditField(ex:Jack)中键入criteria。 然后Dbgrifd的箭头应指向相关行。 我该怎么办? 谢谢。德尔福将TDBGrid组件(以及所有其他TDBxxx组件)定义为数据软件组件。这种组件作为数据集的可视表达式存在 因此,在TDBGrid中,您不应该考虑聚焦网格的一行,而应该考虑定位网格数据集的一行(例如,使用TLama建

我想将焦点设置在Tdbgridview上的特定行上。 首先,我从组合框中选择criteria字段(search ex:FisrtName涉及的列),然后在TeditField(ex:Jack)中键入criteria。 然后Dbgrifd的箭头应指向相关行。 我该怎么办?
谢谢。

德尔福将
TDBGrid
组件(以及所有其他
TDBxxx
组件)定义为数据软件组件。这种组件作为数据集的可视表达式存在

因此,在
TDBGrid
中,您不应该考虑聚焦网格的一行,而应该考虑定位网格数据集的一行(例如,使用TLama建议的
Locate
方法)。网格将注意到其数据集的当前行已更改(因为网格知道数据集的状况),并将聚焦相应的行

更新1

下面可以看到我所说的一个例子:

MyDataset.Locate('Id', 123, []);
上面的代码只是在名为
MyDataset
的数据集中查找特定记录。第一个参数是数据集中现有字段的名称。因此,您有一个包含一些字段的数据集,其中一个字段名为
Id
。第二个参数是所需行中该字段中包含的值,第三个参数是此处不适用的一些选项。有关
Locate
方法的更多详细信息,请转到


换句话说,我们正在寻找一行,其中
Id
字段的值为123!如果数据集可以找到这样一行,它将成为当前记录(或行)。如果有一个
TDBGrid
连接到一个
TDataSource
并连接到
TMyDataset
TDBGrid
,它将自动更新以选择相应的行,就像您想要的那样。

TDBGrid
组件(以及所有其他
TDBxxx
组件)是Delphi定义为数据软件组件的。这种组件作为数据集的可视表达式存在

因此,在
TDBGrid
中,您不应该考虑聚焦网格的一行,而应该考虑定位网格数据集的一行(例如,使用TLama建议的
Locate
方法)。网格将注意到其数据集的当前行已更改(因为网格知道数据集的状况),并将聚焦相应的行

更新1

下面你可以看到我所说的一个例子:

MyDataset.Locate('Id', 123, []);
上面的代码只是在名为
MyDataset
的数据集中查找特定记录。第一个参数是数据集中现有字段的名称。因此,您有一个包含一些字段的数据集,其中一个字段名为
Id
。第二个参数是所需行中该字段中包含的值,第三个参数是此处不适用的一些选项。有关
Locate
方法的更多详细信息,请转到


换句话说,我们正在寻找一行,其中
Id
字段的值为123!如果数据集可以找到这样一行,它将成为当前记录(或行)。如果有一个
TDBGrid
连接到连接到
TMyDataset
TDataSource
,它将自动更新以选择相应的行,就像您想要的那样。

使用例如基础数据集的方法(
DBGrid.DataSource.DataSet.Locate
如果您确信您的网格具有指定的数据源和数据集,则直接引用数据集)。例如,使用基础数据集的方法(
DBGrid.DataSource.DataSet.Locate
如果您确定网格具有指定的数据源和数据集,则直接引用数据集)。我不太理解您的回答:我不太理解您的回答:我将详细说明我的应用程序组件。事实上,我的DBgrid是通过与DataProvider相关的数据集相关的数据源提供的,而DataProvider与Dataquery相关(查询是select*from customers)。当你谈论更改数据集时,我应该在哪里进行干预才能得到我想要的。Thx againSome snippet of code将非常感谢。抱歉如此苛刻,这工作太完美了!非常感谢ALexSC..你是我的救世主!我不太理解你的回答:我不太理解你的回答:我将详细介绍我的c我的应用程序的组件。事实上,我的DBgrid是通过与DataProvider相关的DataSet相关的Datasource提供的,该DataProvider与Dataquery相关(查询是select*from customers).当您谈论更改数据集时,我应该在何处进行干预以获得我想要的内容。再次感谢您提供的一些代码片段。很抱歉如此苛刻,这工作太完美了!非常感谢ALexSC..您是我的救世主!