如何在同一个DBGrid中,通过某一条件检索后,把数据中符合条件的一些数据以不同的颜色显示。 --------------- 正常显示
--------------- 正常显示
=============== 显示红色
--------------- 正常显示
≡≡≡≡≡≡≡≡ 显示绿色
--------------- 正常显示 希望各位大虾指点迷津!
--------------- 正常显示
=============== 显示红色
--------------- 正常显示
≡≡≡≡≡≡≡≡ 显示绿色
--------------- 正常显示 希望各位大虾指点迷津!
begin
if Table1.Fieldbyname(′Salary′).value<=SpinEdit1.value then
DBGrid1.Canvas.Brush.Color:=ColorGrid1.ForeGroundColor
else
DBGrid1.Canvas.Brush.Color:=ColorGrid1.BackGroundColor;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.left+2,Rect.top+2,Field.AsString);
end;
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if field.DataType <> ftFloat then exit;
if field.AsFloat >25000 then begin
dbgrid1.Canvas.brush.Color:=$00B0B0B0;
dbgrid1.canvas.font.color:=clgreen;
end; DBGrid1.Canvas.FillRect(rect);
DBGrid1.DefaultDrawDataCell(rect,field,state);
end;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if UpperCase(Column.FieldName) = UpperCase('Salary') then //要操作的字段
if Column.Field.AsFloat <= 20000 then
DBGrid1.Canvas.Font.Color := clBlue
else if (Column.Field.AsFloat >20000) AND (Column.Field.AsFloat <= 40000) then
DBGrid1.Canvas.Font.Color := clRed
else if Column.Field.AsFloat > 40000 then
DBGrid1.Canvas.Font.Color := clGreen; DbGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;