在StringGrid的DrawCell事件中写先设DefaultDraw属性为falseprocedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
根据ACol和ARow来判断当前的单元格,
if ACol=0 then begin
StringGrid1.Canvas.Brush.Color := clRed; //重画背景色
StringGrid1.Canvas.FillRect(Rect);
end;
end;
Rect: TRect; State: TGridDrawState);
begin
根据ACol和ARow来判断当前的单元格,
if ACol=0 then begin
StringGrid1.Canvas.Brush.Color := clRed; //重画背景色
StringGrid1.Canvas.FillRect(Rect);
end;
end;
解决方案 »
- 关于findwindowex的问题
- 'TBitmap' and 'tagBitmap'不兼容的问题大家见过吗?
- 线程改变图片大小
- 一个数据库完成保存
- 散分~~兼问一个问题.....进来有分阿
- 精简打包的疑惑???
- 能不能在运行时再指定TDataSetProvider的DataSet属性?我来自BCB论坛,看在同为Borland兄弟份上帮帮俺。
- (再问)谁能告诉我cards.dll(扑克牌游戏需要的)怎么用?有哪些函数?
- 在TTREEVIE中我如何确定鼠标点击那一个节点?
- 小弟出学,请教一下B/S,C/S,2层,3层是什么意思?我只有40分,全给你了!
- 如何将统计图打印出来?请附详细例程。(柱状,饼状,折线。。。)(我烧高香了50分)
- 我如何做这样的排序?
Rect: TRect; State: TGridDrawState);
var tmp: string;
r_left : integer;
begin
tmp := sgridService.Cells[ACol,ARow];
if ACol=0 then begin
StringGrid1.Canvas.Brush.Color := clRed;
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.Font.Color := clBlack; //字体颜色
//居中显示文字
r_left := Rect.Left + (Rect.Right-Rect.Left-sgridService.Canvas.TextWidth(tmp)) div 2;
StringGrid1.Canvas.TextRect(Rect, r_left, Rect.Top + 6, tmp); //重画文字
end;
end;
---- 要改变DBGrid每一行的颜色,只要在ONDrawColumnCell事件中设定要改变颜色的行的条件,并指定DBGrid的Canvas.Brush.color属性并且把Canvas.pen.mode属性设成pmmask,再调用DBGrid的DefaultDrawColumnCell方法即可。注意在改变这两个属性前要先保护好原来的Canvas.Brush.color属性的值,调节器用完成 DefaultDrawColumnCell方法后要把原属性值改回,现以Delphi\demos\db\clientmd 目录下的演示程序clintproj.dpr 为例子做简单说明,下面是对程序中的栅格MemberGrid的合条件的整行进行变色,变成黑体背景黄色的,其它不合条件的行的颜色为正常字体,白色背景,只在DrawColumnCelL 事件中设条件其它的不变,如下:
procedure TClientForm.MemberGridDrawColumnCell(
Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
oldcolor:tcolor;
oldpm:tpenmode;
begin
if DM.ProjectTEAM_LEADER.Value =
DM.Emp_ProjEMP_NO.Value then {设定变色的行的条件}
MemberGrid.Canvas.Font.Style := [fsBold];
MemberGrid.DefaultDrawColumnCell
(RectDataColColumnState);
{上面是演示程序的原内容,以下是增加部分}
if DM.ProjectTEAM_LEADER.Value =
DM.Emp_ProjEMP_NO.Value then {设定变色的行的条件}
begin
oldpm:= MemberGrid.Canvas.pen.mode;
oldcolor:= MemberGrid.Canvas.Brush.color;
MemberGrid.Canvas.Brush.color:=clyellow;
MemberGrid.Canvas.pen.mode:=pmmask;
MemberGrid.DefaultDrawColumnCell
(RectDataColColumnState);
MemberGrid.Canvas.Brush.color:=oldcolor;
MemberGrid.Canvas.pen.mode:=oldpm;
end;
end;