dbgrideh背景色
记录有重复的,如何让产品名称一样的背景色一样
[解决办法]
改一下条件就行,这里的是奇偶行的着色...
// 在OnDrawColumnCell事件中
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
with DBGridEh1.Canvas do
if (DBGridEh1.MouseCoord(Rect.Left+1, Rect.Top+1).Y mod 2) = 1 then
Brush.Color := clBlue // 奇数行红色
else
Brush.Color := clRed; // 偶数行为蓝色
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
// 在相对应的Query的AfterScroll事件中
procedure TForm1.Query1AfterScroll(DataSet: TDataSet);
begin
DBGridEh1.Invalidate; // 滚动时刷新grid
end;
[解决办法]
procedure TFrom1.FondGrdDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
const
ArrColor: array[0..5] of TColor =
(clRed,
clBlue,
clGreen,
clGray,
clYellow,
clSilver);
var
i: Integer;
begin
i := FondGrd.datasource.dataset.FieldByName('type').AsInteger;
//i --- 颜色标地,根据这个选择颜色 和品牌名效果一样。
if InRange(i, 0, 5) then
FondGrd.Canvas.Brush.Color := ArrColor[i]
else
FondGrd.Canvas.Brush.Color := clBlack;
FondGrd.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;