假如我有个表,在DBGrid中显示,它的datasource是一个TTable(不是TQuery)
---------------------------------------------
1 dafadsfads
2 asdfadsafsdfe
3 aaaaaaaaaaaaaaaaee
4 adeoooo
-----------------------------------------------
当我输入'ds'就搜索所有包含'ds'的元组,如何让这个满足条件的DBGrid的行变底色?

解决方案 »

  1.   

    类似这样
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var
        i:integer;
        mycolor:TColor;
    begin
        for i:=1 to aCount do
        begin
            if ADOQuery1.FieldByName('CarNo').AsString='晋AAP167' then
            begin
                DBGrid1.Canvas.Font.Color:=clblack;
                DBGrid1.Canvas.Brush.Color := clgreen;
                DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
            end;
            if GdSelected in State then
            begin
                exit;
            end;
        end;
    end;
      

  2.   

    procedure TDlgS006NForm.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
    if ADOQuery3.FieldByName('qty').Asstring ='0' then
        begin
        DBGrid1.Canvas.Font.Color := clRed;
        DBGrid1.Canvas.Brush.Color:=clyellow;
        DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
        end;
    end;