Delphi DBGrid是否通过代码高亮显示定位的行?
我得到了: ADOTable1(将人员编码为整数,将人员命名为字符串) 数据源1(数据集为ADOTable1) DBGrid1(连接到数据源1,选项dgRowSelect为true) 我在ADOTable1上找到一行代码如下Delphi DBGrid是否通过代码高亮显示定位的行?,delphi,row,highlighting,tdbgrid,Delphi,Row,Highlighting,Tdbgrid,我得到了: ADOTable1(将人员编码为整数,将人员命名为字符串) 数据源1(数据集为ADOTable1) DBGrid1(连接到数据源1,选项dgRowSelect为true) 我在ADOTable1上找到一行代码如下 ADOTable1.Locate(ADOTable11codepeople.FieldName, 1, []); DBGrid1正在选择正确的行。但不是重点 如何使DBGrid自动高亮显示我在ADOTable1中找到的行 我阅读了以下链接,但没有找到答案: 简单
ADOTable1.Locate(ADOTable11codepeople.FieldName, 1, []);
DBGrid1正在选择正确的行。但不是重点
如何使DBGrid自动高亮显示我在ADOTable1中找到的行
我阅读了以下链接,但没有找到答案:
简单的源代码请
PS:我使用Delphi 2010。以下代码将使网格中选定的行高亮显示
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;
好的,在我自己试过之后,我发现下面的代码可以完成这个代码:
DBGrid1.setfocus;
由于行已被正确选择,因此设置焦点有助于突出显示
无论如何,感谢您的回复:)grid.SelectedRows.CurrentRowSelected:=True;
这有助于我突出显示当前行10月27日13日5:44的回答 不,纽曼的答案(上面两个)是最好的,正确的答案 现在是2021年。我在德尔福10.2(东京);VCL程序。我从3.02版(1986年)开始使用Delphi 一些进一步的解释: (1) dgAlwaysShowSelection不适用于dgRowSelect(本响应中提到的链接过于复杂-如果它们可以工作的话) (2) DBGrid1.SetFocus将焦点从任何可能是ActiveControl的位置移开 (3) grid.SelectedRows.CurrentRowSelected:=真;不适合我 (4) No'am's hack-->不到10行代码,增加了选择颜色的功能 (4.1)如果你不想“选择”一种颜色,我建议使用CLGradientActiveCoption(而不是NoAM的clMoneyGreen) (*)我98%(99%?)确信我以上的所有观点将适用于任何版本的Delphi,至少可以追溯到5
如果选项
dgAlwaysShowSelection
不应该是您想要的,那么您发布的最后一个链接的答案应该满足您的需求。您还可以在Object Inspector中将DBGrid的TabOrder设置为0。注:我使用embarcadero Xe7这是最佳答案。现在是2021年,我在德尔福10.2(东京)。更多关于这一点,请参阅我的(下面的扩展答案)。