首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

dbgrideh背景色,该如何处理

2012-02-06 
dbgrideh背景色记录有重复的,如何让产品名称一样的背景色一样[解决办法]改一下条件就行,这里的是奇偶行的

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;

热点排行