DBGrid 通过代码突出显示找到的行?

Sid*_*ang 5 delphi row highlighting tdbgrid

我得到:ADOTable1(codepeople作为整数,namepeople作为字符串)DataSource1(DateSet是ADOTable1)DBGrid1(连接到DataSource1,Options-dgRowSelect为true)

我使用以下代码在 ADOTable1 上找到一行

  ADOTable1.Locate(ADOTable11codepeople.FieldName, 1, []);
Run Code Online (Sandbox Code Playgroud)

DBGrid1 正在选择正确的行。但不是亮点。

如何使 DBGrid 自动突出显示我从 ADOTable1 找到的行?

我阅读了以下链接,但没有找到答案:

如何在TDBGrid中设置活动单元格?

Delphi - 使用 DBGrid 从搜索中选择行

在 Delphi 中滚动时查看 DBGrid 中的位置

简单的源码请...

PS:我用的是Delphi 2010。

No'*_*man 6

以下代码将使网格中选定的行突出显示

type
 THackDBGrid = class (TDBGrid);

...

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
           const Rect: TRect; DataCol: Integer; Column: TColumn;
           State: TGridDrawState);
begin
 if (THackDBGrid(dbGrid1).DataLink.ActiveRecord + 1 = THackDBGrid(dbGrid1).Row)
  or (gdFocused in State) or (gdSelected in State) then
   dbGrid1.canvas.Brush.Color:= clMoneyGreen;


 dbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
Run Code Online (Sandbox Code Playgroud)


Sid*_*ang 3

好的,我自己尝试后,发现下面的代码可以完成代码:

DBGrid1.setfocus;
Run Code Online (Sandbox Code Playgroud)

由于已经正确选择了行,因此 setfocus 有助于突出显示。

不管怎样,谢谢你的回复:)