delphi7 点button改变dbgrid选中行的字体颜色
一个button按钮一个dbgrid控件,我要实现:点击那个button按钮,就能把我在dbgrid中选中的那行数据的字体颜色变成红色,其他行字体颜色不变!...
一个button按钮 一个dbgrid控件, 我要实现:点击那个button按钮,就能把我在dbgrid中选中的那行数据的字体颜色变成红色,其他行字体颜色不变!
展开
2个回答
展开全部
操作步骤如下:
1、选择DBGrid,并双击进行事件OnDrawDataCell进行代码编辑;
2、输入代码如下:
if (qyDetail.FieldByName('field1').AsCurrency <> 0) or
(qyDetail.FieldByName('field2').AsCurrency <> 0) then //符合条件的字段
begin
ABrush.Color := clred ; //字体颜色,当前设置为红色
end;
3、编译后查看效果即可。
1、选择DBGrid,并双击进行事件OnDrawDataCell进行代码编辑;
2、输入代码如下:
if (qyDetail.FieldByName('field1').AsCurrency <> 0) or
(qyDetail.FieldByName('field2').AsCurrency <> 0) then //符合条件的字段
begin
ABrush.Color := clred ; //字体颜色,当前设置为红色
end;
3、编译后查看效果即可。
展开全部
var
CHAGECOLOR: Boolean; //初始化为False Button按一下就改变一次T/F 需要设置为全局变量
CHAGECOLOR:= NOT CHAGECOLOR;
DBGrid的OnDrawColCell事件中写如下代码:
With DBGrid do begin
If ((gdSelected in state) and (CHAGECOLOR)) then begin
Canvas.Font.Color :=ClYellow;
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
CHAGECOLOR: Boolean; //初始化为False Button按一下就改变一次T/F 需要设置为全局变量
CHAGECOLOR:= NOT CHAGECOLOR;
DBGrid的OnDrawColCell事件中写如下代码:
With DBGrid do begin
If ((gdSelected in state) and (CHAGECOLOR)) then begin
Canvas.Font.Color :=ClYellow;
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
追问
生效是生效了,但是我一点另一行之后之前改变字体颜色的那行又变回原来的颜色了,如何让它不变回去呢?
追答
var //申明全局变量
CHAGECOLOR: Boolean;
M_COL: set of 0..255;
i_change: integer;
procedure TForm1.BitBtn1Click(Sender: TObject);//按钮 [标色]
begin
CHAGECOLOR:=True;
If Not (i_change in M_COL) then M_COL := M_COL + [i_change];
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);//DBGrid单击事件
begin
CHAGECOLOR:=False;
i_change:=dbgrid1.DataSource.DataSet.RecNo;
end;
//放在DBGrid1的OnDrawColCell事件中, 最好还在最后加一句用于刷新重画的行
With DBGrid1 do begin
If DataSource.DataSet.RecNo in M_COL then begin
Canvas.Font.Color :=Clred;
Canvas.Brush.Color:=clblack;
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
这个缺点是最多只能标注256行, 如果要标注更多, 你把SET OF 0..255 改用数组或者其他类型来保存需要上色的行号就可以了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询