不知道楼主要改它的什么颜色,是单元格的话,你在它的DrawCell事件里进行重画就行了,你要是改变它网格线的颜色,在它的父类里有一个Paint的方法,它有一个DrawLines方法,它有两个参数叫做OnColor和OffColor,你直接改它就行了. 改变网格的颜色: procedure TfrmFrontManager.frmListFrame1grdListDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var Index: Integer; begin index := ColCount * ARow + ACol; with Sender as TDrawGrid do begin if index mod 2 = 0 then Canvas.Brush.Color := clGreen else Canvas.Brush.Color := clYellow;
应该可dbgrid一样的,
你搜索dbgrid的贴吧,能找到
var
SR1,SR2: TRect;
SR: TGridRect;
begin
dg1.Canvas.Brush.Color:=clRed; // dg1: the draw grid
SR:=dg1.Selection;
SR1:=dg1.CellRect(SR.Left,SR.Top);
SR2:=dg1.CellRect(SR.Right+1,SR.Bottom+1);
dg1.Canvas.FillRect(
Rect(Sr1.Left,Sr1.Top,
Sr2.Left,Sr2.Top)
);
end;
procedure TfrmMain.FillDrawGrid(dg1: TDrawGrid);
var
sr1,sr2: TRect;
sr: TGridRect;
begin
dg1.Canvas.Brush.Color := clGreen;
sr := dg1.Selection;
sr1 := dg1.CellRect(sr.Left,sr.Top);
sr2 := dg1.CellRect(sr.Right+1,sr.Bottom+1);
dg1.Canvas.FillRect(Rect(sr1.Left,sr1.Top,sr2.Left,sr2.Top));
end;procedure TfrmMain.DrawGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FillDrawGrid(DrawGrid1);
end;但是每次激活此事件,前一次的填充色消失了。怎么保留上一次的填充色呢
改变网格的颜色:
procedure TfrmFrontManager.frmListFrame1grdListDrawCell(Sender: TObject;
ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
Index: Integer;
begin
index := ColCount * ARow + ACol;
with Sender as TDrawGrid do
begin
if index mod 2 = 0 then
Canvas.Brush.Color := clGreen
else
Canvas.Brush.Color := clYellow;
Canvas.FillRect(Rect);
end;
end;