我得到了:ADOTable 1(代码人为整数,名称人为字符串)数据源1(日期集为ADOTable 1)DBGrid 1(连接到数据源1,选项-dgRowSelect为真)
我使用以下代码在ADOTable 1上找到一行
ADOTable1.Locate(ADOTable11codepeople.FieldName, 1, []);
DBGrid 1正在选择正确的行。但没有突出显示。
如何使DBGrid自动突出显示我从ADOTable 1中找到的行?
我看了下面的链接,没有找到答案:
如何在TDBGrid中设置活动单元格?
Delphi - Using DBGrid to select rows from a search
View position in DBGrid when scrolling in Delphi
简单的源代码请...
PS:我用的是 Delphi 2010。
5条答案
按热度按时间q5iwbnjs1#
下面的代码将突出显示网格中的选定行
yeotifhr2#
好的,在我尝试了自己,然后我发现下面的代码可以做的代码:
由于行已正确选定,setfocus有助于突出显示。
无论如何,谢谢你的回复:)
0x6upsns3#
网格.选定行.当前选定行:= True;这有助于我突出显示当前行
iugsix8n4#
我在13年10月27日5:44回答
恕我直言,纽曼的答案(上面两个)是最好的,正确的答案。
现在是2021年,我在 Delphi 10.2(东京); VCL程序。我从Delphi 3.02版本(1986)开始使用它。
有人进一步解释:
(1)dgAlwaysShowSelection不能与dgRowSelect一起使用(并且此响应中提到的链接过于复杂-如果它们能使用的话)
(2)DBGrid1.SetFocus将焦点从可能是ActiveControl的任何对象上移开
(3)网格.选定行.当前选定行:= True;对我不起作用
(4)No'am' s hack --〉它不到10行代码,并且增加了选择颜色的功能。
(4.1)如果你不想“选择”一种颜色,我建议使用clGradientActiveCaption(而不是No'am的clMoneyGreen)。
(*)我有98%(99%?)的把握,我上面的所有观点将/将适用于任何版本的 Delphi ,至少可以追溯到5。
〈这就是我的全部〉
rfbsl7qr5#
作为对No'am纽曼伟大答案的进一步扩展(即使在2022年),以下代码将使网格中的选定行高亮显示,但相对于当前方案,使用DrawCellHighlight()而不是特定颜色: