通过query1.locate()查找数据后如何将找到的数据所在行变蓝?(20分)

  • 主题发起人 主题发起人 asiancat
  • 开始时间 开始时间
A

asiancat

Unregistered / Unconfirmed
GUEST, unregistred user!
通过query1.locate()查找数据后如何将找到的数据所在行变蓝?
 
procedure TForm1.GridDrawColumnCell(Sender: TObject
const Rect: TRect;
DataCol: Integer
Column: TColumn
State: TGridDrawState);
begin
if odd(Grid.DataSource.DataSet.RecNo) then//奇偶行判断
begin
Grid.Canvas.Font.Color:=clblack;
Grid.Canvas.Brush.color:=clwhite;
end
else
begin
Grid.Canvas.Font.Color:=clblack;
Grid.Canvas.Brush.color:=clcream;
end;
if Grid.SelectedRows.CurrentRowSelected then//dgRowSelect和dgMultiSelect都为真时有效
begin
Grid.Canvas.Font.Size:=12;
Grid.Canvas.Font.Style:=[fsBold];
Grid.Canvas.Font.Color:=clwhite;
Grid.Canvas.Brush.color:=clNavy;
end;
Grid.DefaultDrawColumnCell(rect,datacol,column,state);

end;
 
我按照这段代码试了,不是我想要的。
我的意思是比如说符合我要求的记录在第四行则程序将表现出选中的效果。就是底色为蓝色,字为白色
 
直接就选中该行不就行了吗?
 
通过query1.locate()查找数据后,数据所在行变蓝。
procedure TzhcxFrm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect
DataCol: Integer
Column: TColumn;
State: TGridDrawState);
begin
if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
DbGrid1.Canvas.Brush.color:=$00C08000;// 当前行以红色显示,其它行使用背景的浅绿色
DbGrid1.Canvas.pen.mode:=pmmask;
DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
 
后退
顶部